From ea8ed48d2561381d3c90dc75e473385daad1f45b Mon Sep 17 00:00:00 2001 From: Jonathan Jenne Date: Tue, 15 Aug 2023 13:27:50 +0200 Subject: [PATCH] 15-08-23 --- Connectors.Form/Modules/BaseModule.vb | 25 +++++++++++--- Connectors.Form/Modules/ISync.vb | 3 +- .../Modules/Sharepoint/SharepointSync.vb | 10 ++++-- Connectors.Form/Modules/slt/sltSync.vb | 10 ++++-- Connectors.Form/frmMain.Designer.vb | 10 ++++-- Connectors.Form/frmMain.resx | 34 +++++++++++++++++++ Connectors.Form/frmMain.vb | 27 ++++++++++++--- 7 files changed, 101 insertions(+), 18 deletions(-) diff --git a/Connectors.Form/Modules/BaseModule.vb b/Connectors.Form/Modules/BaseModule.vb index a499b93..7f574f0 100644 --- a/Connectors.Form/Modules/BaseModule.vb +++ b/Connectors.Form/Modules/BaseModule.vb @@ -1,4 +1,5 @@ Imports System.IO +Imports System.Runtime.Remoting.Messaging Imports System.Threading.Tasks Imports DevExpress.DocumentView Imports DigitalData.Modules.Base @@ -12,14 +13,23 @@ Public MustInherit Class BaseModule Friend ReadOnly Config As Config Friend ReadOnly Database As MSSQLServer + Public Const DIVIDER_TEXT = "-------------------------------------" + + Public Enum LogLevel + Info + Warn + [Error] + End Enum + Public MustOverride Property Name As String Implements ISync.Name Public MustOverride Property IsLoggedIn As Boolean Implements ISync.IsLoggedIn Public MustOverride Async Function Run() As Task Implements ISync.Run Public MustOverride Function Cleanup() As Task Implements ISync.Cleanup Public MustOverride Function TestConfigIsComplete() As Boolean Implements ISync.TestConfigIsComplete - Public Event OnLogEntry As EventHandler(Of String) Implements ISync.OnLogEntry + Public Event OnLogEntry As EventHandler(Of Tuple(Of String, LogLevel)) Implements ISync.OnLogEntry Public Event OnFileProcessed As EventHandler(Of String) Implements ISync.OnFileProcessed + Public Event OnFileError As EventHandler(Of String) Implements ISync.OnFileError Public Sub New(pLogConfig As LogConfig, pDatabase As MSSQLServer, pConfig As Config) MyBase.New(pLogConfig) @@ -127,18 +137,25 @@ Public MustInherit Class BaseModule End Function Friend Sub AddInfoEntry(pMessage As String, ParamArray pArgs As Object()) - RaiseEvent OnLogEntry(Me, String.Format(pMessage, pArgs)) + RaiseEvent OnLogEntry(Me, New Tuple(Of String, LogLevel)(String.Format(pMessage, pArgs), LogLevel.Info)) End Sub Friend Sub AddWarnEntry(pMessage As String, ParamArray pArgs As Object()) - RaiseEvent OnLogEntry(Me, String.Format(pMessage, pArgs)) + RaiseEvent OnLogEntry(Me, New Tuple(Of String, LogLevel)(String.Format(pMessage, pArgs), LogLevel.Warn)) End Sub + Friend Sub AddErrorEntry(pMessage As String, ParamArray pArgs As Object()) + RaiseEvent OnLogEntry(Me, New Tuple(Of String, LogLevel)(String.Format(pMessage, pArgs), LogLevel.Error)) + End Sub Friend Sub AddDivider() - RaiseEvent OnLogEntry(Me, "---") + RaiseEvent OnLogEntry(Me, New Tuple(Of String, LogLevel)(DIVIDER_TEXT, LogLevel.Info)) End Sub Friend Sub RaiseFileProcessed(pFilePath As String) RaiseEvent OnFileProcessed(Me, pFilePath) End Sub + + Friend Sub RaiseFileError(pFilePath As String) + RaiseEvent OnFileError(Me, pFilePath) + End Sub End Class diff --git a/Connectors.Form/Modules/ISync.vb b/Connectors.Form/Modules/ISync.vb index a40e481..330ab97 100644 --- a/Connectors.Form/Modules/ISync.vb +++ b/Connectors.Form/Modules/ISync.vb @@ -7,6 +7,7 @@ Public Interface ISync Function Cleanup() As Task Function TestConfigIsComplete() As Boolean - Event OnLogEntry As EventHandler(Of String) + Event OnLogEntry As EventHandler(Of Tuple(Of String, BaseModule.LogLevel)) Event OnFileProcessed As EventHandler(Of String) + Event OnFileError As EventHandler(Of String) End Interface diff --git a/Connectors.Form/Modules/Sharepoint/SharepointSync.vb b/Connectors.Form/Modules/Sharepoint/SharepointSync.vb index b35ef49..fb27fe1 100644 --- a/Connectors.Form/Modules/Sharepoint/SharepointSync.vb +++ b/Connectors.Form/Modules/Sharepoint/SharepointSync.vb @@ -51,11 +51,15 @@ Namespace Sharepoint End If Dim oSQL = String.Format(Config.SQLQueryExport, oDocument.Id, oFileName) - Await Database.ExecuteNonQueryAsync(oSQL) - - RaiseFileProcessed(oFilePath) + If Await Database.ExecuteNonQueryAsync(oSQL) = True Then + RaiseFileProcessed(oFilePath) + Else + Throw New ApplicationException("Database entry could not be written!") + End If Catch ex As Exception + RaiseFileError(oDocId) + Logger.Error(ex) AddWarnEntry("Error while running Sync: " & ex.Message) End Try diff --git a/Connectors.Form/Modules/slt/sltSync.vb b/Connectors.Form/Modules/slt/sltSync.vb index 00b02b3..985416c 100644 --- a/Connectors.Form/Modules/slt/sltSync.vb +++ b/Connectors.Form/Modules/slt/sltSync.vb @@ -63,11 +63,15 @@ Namespace slt End If Dim oSQL = String.Format(Config.SQLQueryExport, oDocument.ExtDocId, oFileName) - Await Database.ExecuteNonQueryAsync(oSQL) - - RaiseFileProcessed(oFilePath) + If Await Database.ExecuteNonQueryAsync(oSQL) = True Then + RaiseFileProcessed(oFilePath) + Else + Throw New ApplicationException("Database entry could not be written!") + End If Catch ex As Exception + RaiseFileError(oDocId) + Logger.Error(ex) AddWarnEntry("Error while running Sync: " & ex.Message) End Try diff --git a/Connectors.Form/frmMain.Designer.vb b/Connectors.Form/frmMain.Designer.vb index a96a3cd..e691dc1 100644 --- a/Connectors.Form/frmMain.Designer.vb +++ b/Connectors.Form/frmMain.Designer.vb @@ -53,7 +53,7 @@ Me.ListBoxControl1.Dock = System.Windows.Forms.DockStyle.Fill Me.ListBoxControl1.Location = New System.Drawing.Point(0, 63) Me.ListBoxControl1.Name = "ListBoxControl1" - Me.ListBoxControl1.Size = New System.Drawing.Size(632, 215) + Me.ListBoxControl1.Size = New System.Drawing.Size(632, 191) Me.ListBoxControl1.TabIndex = 0 ' 'RibbonControl1 @@ -166,21 +166,25 @@ ' Me.txtFilesProcessed.Caption = "Keine Dateien" Me.txtFilesProcessed.Id = 5 + Me.txtFilesProcessed.ImageOptions.SvgImage = CType(resources.GetObject("txtFilesProcessed.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage) Me.txtFilesProcessed.Name = "txtFilesProcessed" + Me.txtFilesProcessed.PaintStyle = DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph ' 'txtErrorsOccurred ' - Me.txtErrorsOccurred.Caption = "Keine Dateien" + Me.txtErrorsOccurred.Caption = "Keine Fehler" Me.txtErrorsOccurred.Id = 6 + Me.txtErrorsOccurred.ImageOptions.SvgImage = CType(resources.GetObject("txtErrorsOccurred.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage) Me.txtErrorsOccurred.Name = "txtErrorsOccurred" + Me.txtErrorsOccurred.PaintStyle = DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph ' 'frmMain ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font Me.ClientSize = New System.Drawing.Size(632, 278) - Me.Controls.Add(Me.RibbonStatusBar1) Me.Controls.Add(Me.ListBoxControl1) + Me.Controls.Add(Me.RibbonStatusBar1) Me.Controls.Add(Me.RibbonControl1) Me.IconOptions.SvgImage = CType(resources.GetObject("frmMain.IconOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage) Me.Name = "frmMain" diff --git a/Connectors.Form/frmMain.resx b/Connectors.Form/frmMain.resx index f549a1e..de66506 100644 --- a/Connectors.Form/frmMain.resx +++ b/Connectors.Form/frmMain.resx @@ -190,6 +190,40 @@ MS4xTDIuOSw0LjFDMi40LDMuOCwyLDQsMiw0LjZ2MjAuNmMwLDAuNiwwLjQsMC44LDAuOSwwLjVMMTku NywxNS41eiIgY2xhc3M9IkJsdWUiIC8+DQogIDwvZz4NCiAgPGcgaWQ9IkxheWVyXzIiIC8+DQo8L3N2 Zz4L + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40 + LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl + dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAMUBAAAC77u/ + PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi + IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv + MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh + Y2U9InByZXNlcnZlIiBpZD0iTmV3IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAzMiAz + MiI+DQogIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CgkuQmxhY2t7ZmlsbDojNzI3MjcyO30KPC9zdHls + ZT4NCiAgPHBhdGggZD0iTTE5LDJINUM0LjQsMiw0LDIuNCw0LDN2MjRjMCwwLjYsMC40LDEsMSwxaDIw + YzAuNiwwLDEtMC40LDEtMVY5TDE5LDJ6IE0yNCwyNkg2VjRoMTJ2NWMwLDAuNiwwLjQsMSwxLDFoNSAg + VjI2eiIgY2xhc3M9IkJsYWNrIiAvPg0KPC9zdmc+Cw== + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40 + LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl + dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAANACAAAC77u/ + PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi + IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv + MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh + Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg + MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9Cgku + UmVke2ZpbGw6I0QxMUMxQzt9CgkuWWVsbG93e2ZpbGw6I0ZGQjExNTt9CgkuR3JlZW57ZmlsbDojMDM5 + QzIzO30KPC9zdHlsZT4NCiAgPGcgaWQ9Ildhcm5pbmdDaXJjbGVkMiI+DQogICAgPHBhdGggZD0iTTE2 + LDJDOC4zLDIsMiw4LjMsMiwxNnM2LjMsMTQsMTQsMTRzMTQtNi4zLDE0LTE0UzIzLjcsMiwxNiwyeiBN + MTYsMjhDOS40LDI4LDQsMjIuNiw0LDE2QzQsOS40LDkuNCw0LDE2LDQgICBzMTIsNS40LDEyLDEyQzI4 + LDIyLjYsMjIuNiwyOCwxNiwyOHoiIGNsYXNzPSJSZWQiIC8+DQogICAgPGNpcmNsZSBjeD0iMTYiIGN5 + PSIyMiIgcj0iMiIgY2xhc3M9IlJlZCIgLz4NCiAgICA8cmVjdCB4PSIxNCIgeT0iOCIgd2lkdGg9IjQi + IGhlaWdodD0iMTAiIHJ4PSIwIiByeT0iMCIgY2xhc3M9IlJlZCIgLz4NCiAgPC9nPg0KPC9zdmc+Cw== diff --git a/Connectors.Form/frmMain.vb b/Connectors.Form/frmMain.vb index b043c18..3195673 100644 --- a/Connectors.Form/frmMain.vb +++ b/Connectors.Form/frmMain.vb @@ -91,11 +91,9 @@ Partial Public Class frmMain Select Case pActiveModule Case "slt" oSync = New slt.sltSync(LogConfig, Database, ConfigManager.Config) - AddHandler oSync.OnLogEntry, AddressOf Sync_OnLogEntry Case "Sharepoint" oSync = New Sharepoint.SharepointSync(LogConfig, Database, ConfigManager.Config) - AddHandler oSync.OnLogEntry, AddressOf Sync_OnLogEntry Case Else @@ -103,11 +101,32 @@ Partial Public Class frmMain End Select + AddHandler oSync.OnLogEntry, AddressOf Sync_OnLogEntry + AddHandler oSync.OnFileError, AddressOf Sync_OnFileError + AddHandler oSync.OnFileProcessed, AddressOf Sync_OnFileProcessed + Return oSync End Function - Private Sub Sync_OnLogEntry(sender As Object, e As String) - AddInfoEntry(e) + Private Sub Sync_OnFileProcessed(sender As Object, e As String) + FilesProcessed += 1 + txtFilesProcessed.Caption = String.Format("{0} Dateien", FilesProcessed) + End Sub + + Private Sub Sync_OnFileError(sender As Object, e As String) + ErrorsOccurred += 1 + txtErrorsOccurred.Caption = String.Format("{0} Fehler", ErrorsOccurred) + End Sub + + Private Sub Sync_OnLogEntry(sender As Object, e As Tuple(Of String, BaseModule.LogLevel)) + Select Case e.Item2 + Case BaseModule.LogLevel.Info + AddInfoEntry(e.Item1) + Case BaseModule.LogLevel.Warn + AddWarnEntry(e.Item1) + Case BaseModule.LogLevel.Error + AddErrorEntry(e.Item1) + End Select End Sub Private Async Function frmMain_Closing(sender As Object, e As CancelEventArgs) As Threading.Tasks.Task Handles Me.Closing