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