This commit is contained in:
Jonathan Jenne 2023-08-15 13:27:50 +02:00
parent 775418fb7a
commit ea8ed48d25
7 changed files with 101 additions and 18 deletions

View File

@ -1,4 +1,5 @@
Imports System.IO Imports System.IO
Imports System.Runtime.Remoting.Messaging
Imports System.Threading.Tasks Imports System.Threading.Tasks
Imports DevExpress.DocumentView Imports DevExpress.DocumentView
Imports DigitalData.Modules.Base Imports DigitalData.Modules.Base
@ -12,14 +13,23 @@ Public MustInherit Class BaseModule
Friend ReadOnly Config As Config Friend ReadOnly Config As Config
Friend ReadOnly Database As MSSQLServer 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 Name As String Implements ISync.Name
Public MustOverride Property IsLoggedIn As Boolean Implements ISync.IsLoggedIn Public MustOverride Property IsLoggedIn As Boolean Implements ISync.IsLoggedIn
Public MustOverride Async Function Run() As Task Implements ISync.Run Public MustOverride Async Function Run() As Task Implements ISync.Run
Public MustOverride Function Cleanup() As Task Implements ISync.Cleanup Public MustOverride Function Cleanup() As Task Implements ISync.Cleanup
Public MustOverride Function TestConfigIsComplete() As Boolean Implements ISync.TestConfigIsComplete 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 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) Public Sub New(pLogConfig As LogConfig, pDatabase As MSSQLServer, pConfig As Config)
MyBase.New(pLogConfig) MyBase.New(pLogConfig)
@ -127,18 +137,25 @@ Public MustInherit Class BaseModule
End Function End Function
Friend Sub AddInfoEntry(pMessage As String, ParamArray pArgs As Object()) 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 End Sub
Friend Sub AddWarnEntry(pMessage As String, ParamArray pArgs As Object()) 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 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() Friend Sub AddDivider()
RaiseEvent OnLogEntry(Me, "---") RaiseEvent OnLogEntry(Me, New Tuple(Of String, LogLevel)(DIVIDER_TEXT, LogLevel.Info))
End Sub End Sub
Friend Sub RaiseFileProcessed(pFilePath As String) Friend Sub RaiseFileProcessed(pFilePath As String)
RaiseEvent OnFileProcessed(Me, pFilePath) RaiseEvent OnFileProcessed(Me, pFilePath)
End Sub End Sub
Friend Sub RaiseFileError(pFilePath As String)
RaiseEvent OnFileError(Me, pFilePath)
End Sub
End Class End Class

View File

@ -7,6 +7,7 @@ Public Interface ISync
Function Cleanup() As Task Function Cleanup() As Task
Function TestConfigIsComplete() As Boolean 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 OnFileProcessed As EventHandler(Of String)
Event OnFileError As EventHandler(Of String)
End Interface End Interface

View File

@ -51,11 +51,15 @@ Namespace Sharepoint
End If End If
Dim oSQL = String.Format(Config.SQLQueryExport, oDocument.Id, oFileName) Dim oSQL = String.Format(Config.SQLQueryExport, oDocument.Id, oFileName)
Await Database.ExecuteNonQueryAsync(oSQL) If Await Database.ExecuteNonQueryAsync(oSQL) = True Then
RaiseFileProcessed(oFilePath)
RaiseFileProcessed(oFilePath) Else
Throw New ApplicationException("Database entry could not be written!")
End If
Catch ex As Exception Catch ex As Exception
RaiseFileError(oDocId)
Logger.Error(ex) Logger.Error(ex)
AddWarnEntry("Error while running Sync: " & ex.Message) AddWarnEntry("Error while running Sync: " & ex.Message)
End Try End Try

View File

@ -63,11 +63,15 @@ Namespace slt
End If End If
Dim oSQL = String.Format(Config.SQLQueryExport, oDocument.ExtDocId, oFileName) Dim oSQL = String.Format(Config.SQLQueryExport, oDocument.ExtDocId, oFileName)
Await Database.ExecuteNonQueryAsync(oSQL) If Await Database.ExecuteNonQueryAsync(oSQL) = True Then
RaiseFileProcessed(oFilePath)
RaiseFileProcessed(oFilePath) Else
Throw New ApplicationException("Database entry could not be written!")
End If
Catch ex As Exception Catch ex As Exception
RaiseFileError(oDocId)
Logger.Error(ex) Logger.Error(ex)
AddWarnEntry("Error while running Sync: " & ex.Message) AddWarnEntry("Error while running Sync: " & ex.Message)
End Try End Try

View File

@ -53,7 +53,7 @@
Me.ListBoxControl1.Dock = System.Windows.Forms.DockStyle.Fill Me.ListBoxControl1.Dock = System.Windows.Forms.DockStyle.Fill
Me.ListBoxControl1.Location = New System.Drawing.Point(0, 63) Me.ListBoxControl1.Location = New System.Drawing.Point(0, 63)
Me.ListBoxControl1.Name = "ListBoxControl1" 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 Me.ListBoxControl1.TabIndex = 0
' '
'RibbonControl1 'RibbonControl1
@ -166,21 +166,25 @@
' '
Me.txtFilesProcessed.Caption = "Keine Dateien" Me.txtFilesProcessed.Caption = "Keine Dateien"
Me.txtFilesProcessed.Id = 5 Me.txtFilesProcessed.Id = 5
Me.txtFilesProcessed.ImageOptions.SvgImage = CType(resources.GetObject("txtFilesProcessed.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage)
Me.txtFilesProcessed.Name = "txtFilesProcessed" Me.txtFilesProcessed.Name = "txtFilesProcessed"
Me.txtFilesProcessed.PaintStyle = DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph
' '
'txtErrorsOccurred 'txtErrorsOccurred
' '
Me.txtErrorsOccurred.Caption = "Keine Dateien" Me.txtErrorsOccurred.Caption = "Keine Fehler"
Me.txtErrorsOccurred.Id = 6 Me.txtErrorsOccurred.Id = 6
Me.txtErrorsOccurred.ImageOptions.SvgImage = CType(resources.GetObject("txtErrorsOccurred.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage)
Me.txtErrorsOccurred.Name = "txtErrorsOccurred" Me.txtErrorsOccurred.Name = "txtErrorsOccurred"
Me.txtErrorsOccurred.PaintStyle = DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph
' '
'frmMain 'frmMain
' '
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(632, 278) Me.ClientSize = New System.Drawing.Size(632, 278)
Me.Controls.Add(Me.RibbonStatusBar1)
Me.Controls.Add(Me.ListBoxControl1) Me.Controls.Add(Me.ListBoxControl1)
Me.Controls.Add(Me.RibbonStatusBar1)
Me.Controls.Add(Me.RibbonControl1) Me.Controls.Add(Me.RibbonControl1)
Me.IconOptions.SvgImage = CType(resources.GetObject("frmMain.IconOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage) Me.IconOptions.SvgImage = CType(resources.GetObject("frmMain.IconOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage)
Me.Name = "frmMain" Me.Name = "frmMain"

View File

@ -190,6 +190,40 @@
MS4xTDIuOSw0LjFDMi40LDMuOCwyLDQsMiw0LjZ2MjAuNmMwLDAuNiwwLjQsMC44LDAuOSwwLjVMMTku MS4xTDIuOSw0LjFDMi40LDMuOCwyLDQsMiw0LjZ2MjAuNmMwLDAuNiwwLjQsMC44LDAuOSwwLjVMMTku
NywxNS41eiIgY2xhc3M9IkJsdWUiIC8+DQogIDwvZz4NCiAgPGcgaWQ9IkxheWVyXzIiIC8+DQo8L3N2 NywxNS41eiIgY2xhc3M9IkJsdWUiIC8+DQogIDwvZz4NCiAgPGcgaWQ9IkxheWVyXzIiIC8+DQo8L3N2
Zz4L Zz4L
</value>
</data>
<data name="txtFilesProcessed.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v21.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40
LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAMUBAAAC77u/
PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
Y2U9InByZXNlcnZlIiBpZD0iTmV3IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAzMiAz
MiI+DQogIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CgkuQmxhY2t7ZmlsbDojNzI3MjcyO30KPC9zdHls
ZT4NCiAgPHBhdGggZD0iTTE5LDJINUM0LjQsMiw0LDIuNCw0LDN2MjRjMCwwLjYsMC40LDEsMSwxaDIw
YzAuNiwwLDEtMC40LDEtMVY5TDE5LDJ6IE0yNCwyNkg2VjRoMTJ2NWMwLDAuNiwwLjQsMSwxLDFoNSAg
VjI2eiIgY2xhc3M9IkJsYWNrIiAvPg0KPC9zdmc+Cw==
</value>
</data>
<data name="txtErrorsOccurred.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v21.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40
LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAANACAAAC77u/
PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9Cgku
UmVke2ZpbGw6I0QxMUMxQzt9CgkuWWVsbG93e2ZpbGw6I0ZGQjExNTt9CgkuR3JlZW57ZmlsbDojMDM5
QzIzO30KPC9zdHlsZT4NCiAgPGcgaWQ9Ildhcm5pbmdDaXJjbGVkMiI+DQogICAgPHBhdGggZD0iTTE2
LDJDOC4zLDIsMiw4LjMsMiwxNnM2LjMsMTQsMTQsMTRzMTQtNi4zLDE0LTE0UzIzLjcsMiwxNiwyeiBN
MTYsMjhDOS40LDI4LDQsMjIuNiw0LDE2QzQsOS40LDkuNCw0LDE2LDQgICBzMTIsNS40LDEyLDEyQzI4
LDIyLjYsMjIuNiwyOCwxNiwyOHoiIGNsYXNzPSJSZWQiIC8+DQogICAgPGNpcmNsZSBjeD0iMTYiIGN5
PSIyMiIgcj0iMiIgY2xhc3M9IlJlZCIgLz4NCiAgICA8cmVjdCB4PSIxNCIgeT0iOCIgd2lkdGg9IjQi
IGhlaWdodD0iMTAiIHJ4PSIwIiByeT0iMCIgY2xhc3M9IlJlZCIgLz4NCiAgPC9nPg0KPC9zdmc+Cw==
</value> </value>
</data> </data>
<metadata name="SyncTimer.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="SyncTimer.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">

View File

@ -91,11 +91,9 @@ Partial Public Class frmMain
Select Case pActiveModule Select Case pActiveModule
Case "slt" Case "slt"
oSync = New slt.sltSync(LogConfig, Database, ConfigManager.Config) oSync = New slt.sltSync(LogConfig, Database, ConfigManager.Config)
AddHandler oSync.OnLogEntry, AddressOf Sync_OnLogEntry
Case "Sharepoint" Case "Sharepoint"
oSync = New Sharepoint.SharepointSync(LogConfig, Database, ConfigManager.Config) oSync = New Sharepoint.SharepointSync(LogConfig, Database, ConfigManager.Config)
AddHandler oSync.OnLogEntry, AddressOf Sync_OnLogEntry
Case Else Case Else
@ -103,11 +101,32 @@ Partial Public Class frmMain
End Select End Select
AddHandler oSync.OnLogEntry, AddressOf Sync_OnLogEntry
AddHandler oSync.OnFileError, AddressOf Sync_OnFileError
AddHandler oSync.OnFileProcessed, AddressOf Sync_OnFileProcessed
Return oSync Return oSync
End Function End Function
Private Sub Sync_OnLogEntry(sender As Object, e As String) Private Sub Sync_OnFileProcessed(sender As Object, e As String)
AddInfoEntry(e) 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 End Sub
Private Async Function frmMain_Closing(sender As Object, e As CancelEventArgs) As Threading.Tasks.Task Handles Me.Closing Private Async Function frmMain_Closing(sender As Object, e As CancelEventArgs) As Threading.Tasks.Task Handles Me.Closing