Monorepo/GUIs.ZooFlow/Modules/Globix/ClassFolderwatcher.vb

186 lines
7.4 KiB
VB.net

Imports System.IO
Imports DigitalData.GUIs.Common
Imports DigitalData.Modules.Base
Imports DigitalData.Modules.Logging
Public Class ClassFolderwatcher
Inherits BaseClass
Public Shared FWFolderWatcher As FileSystemWatcher
Public Shared FWScan As FileSystemWatcher
Private ReadOnly FileHandle As ClassFilehandle
Public Sub New(pLogConfig As LogConfig)
MyBase.New(pLogConfig)
FileHandle = New ClassFilehandle(pLogConfig)
End Sub
Public Function Restart_FolderWatch() As Boolean
If Directory.Exists(My.Application.Globix.CurrentFolderWatchPath) Then
Try
If FWFolderWatcher.EnableRaisingEvents = True Then
'Gestartet also Stoppen
FWFolderWatcher.EnableRaisingEvents = False
My.Application.Globix.Folderwatchstarted = False
FWFolderWatcher = StartFolderwatcherForPath(My.Application.Globix.CurrentFolderWatchPath)
My.Application.Globix.Folderwatchstarted = True
My.UIConfig.Globix.FolderWatchStarted = True
My.UIConfigManager.Save()
End If
Return True
Catch ex As Exception
Logger.Info($"Error in Restart_FolderWatch: {ex.Message}")
Logger.Error(ex.Message)
Return False
End Try
Else
Logger.Info($"Attention: Check the fodlerwatchinit-Module...My.Application.Globix.CurrentFolderWatchPath is not existing [{My.Application.Globix.CurrentFolderWatchPath}]")
Return False
End If
End Function
Public Sub Restart_FolderWatchSCAN()
Try
If FWScan.EnableRaisingEvents = True Then
'Gestartet also Stoppen
FWScan.EnableRaisingEvents = False
'FolderWatch neu instanzieren
FWScan = StartFolderwatcherForPath(My.Application.Globix.CURRENT_SCAN_FOLDERWATCH)
My.UIConfig.Globix.FolderWatchScanStarted = True
My.UIConfigManager.Save()
End If
Catch ex As Exception
Logger.Info($"Error in Restart_FolderWatchSCAN: {ex.Message}")
Logger.Error(ex.Message)
End Try
End Sub
Public Function StartStop_FolderWatch()
Try
If FWFolderWatcher Is Nothing Then 'OrElse FWFolderWatcher.EnableRaisingEvents = False
' Folderwatch neu instanzieren
FWFolderWatcher = StartFolderwatcherForPath(My.Application.Globix.CurrentFolderWatchPath)
My.Application.Globix.Folderwatchstarted = True
My.UIConfig.Globix.FolderWatchStarted = True
My.UIConfigManager.Save()
Logger.Info("Folderwatch successfully started!")
Return 1
End If
If FWFolderWatcher.EnableRaisingEvents = True Then
'Gestartet also Stoppen
FWFolderWatcher.EnableRaisingEvents = False
My.Application.Globix.Folderwatchstarted = False
Logger.Info("Folderwatch stopped!")
My.UIConfig.Globix.FolderWatchStarted = False
My.UIConfigManager.Save()
Return 0
End If
Catch ex As Exception
Logger.Error(ex.Message)
Dim oMsgBox As New frmDialog("Error in StartStop_FolderWatch:" & vbNewLine & ex.Message, "", True)
oMsgBox.ShowDialog()
End Try
End Function
Public Function StartStop_FolderWatchSCAN() As Integer
Try
If FWScan Is Nothing Then
FWScan = New FileSystemWatcher(My.Application.Globix.CURRENT_SCAN_FOLDERWATCH, "*.*")
Logger.Info(" >> FolderWatch Scan Gestartet")
FWScan.IncludeSubdirectories = False
FWScan.EnableRaisingEvents = True
AddHandler FWScan.Created, AddressOf OnCreated
My.UIConfig.Globix.FolderWatchScanStarted = True
My.UIConfigManager.Save()
Return 1
End If
If FWScan.EnableRaisingEvents = False Then
' Dim watcher As New FileSystemWatcher()
' watcher.Path = CURRENT_FOLDERWATCH
FWScan = New System.IO.FileSystemWatcher(My.Application.Globix.CURRENT_SCAN_FOLDERWATCH, "*.*")
Logger.Info(" >> FolderWatch Scan Gestartet")
FWScan.IncludeSubdirectories = False
FWScan.EnableRaisingEvents = True
AddHandler FWScan.Created, AddressOf OnCreated
My.UIConfig.Globix.FolderWatchScanStarted = True
My.UIConfigManager.Save()
Return 1
Else
'Gestartet also Stoppen
FWScan.EnableRaisingEvents = False
Logger.Info(" >> FolderWatch Scan gestoppt")
'SaveConfigValue("FWSCAN_started", "False")
My.UIConfig.Globix.FolderWatchScanStarted = False
My.UIConfigManager.Save()
Return 0
End If
Catch ex As Exception
Logger.Error(ex.Message)
MsgBox("Error in StartStop_FolderWatchSCAN:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
Return 99
End Try
End Function
Public Function Stop_FWSCAN()
If FWFolderWatcher.EnableRaisingEvents = True Then
'Gestartet also Stoppen
FWFolderWatcher.EnableRaisingEvents = False
My.Application.Globix.Folderwatchstarted = False
Logger.Info(" >> FolderWatch gestoppt")
'SaveConfigValue("my.Application.Globix.Folderwatchstarted", "False")
My.UIConfig.Globix.FolderWatchStarted = True
My.UIConfigManager.Save()
Return True
Else
Return False
End If
End Function
Private Function StartFolderwatcherForPath(pPath As String) As FileSystemWatcher
Logger.Debug("Folder Watcher starting up for Path [{0}]", pPath)
Dim oWatcher = New FileSystemWatcher(pPath, "*.*") With {
.IncludeSubdirectories = False,
.EnableRaisingEvents = True
}
AddHandler oWatcher.Created, AddressOf OnCreated
Logger.Debug("Folder Watcher started for Path [{0}]", pPath)
Return oWatcher
End Function
Private Sub OnCreated(source As Object, e As FileSystemEventArgs)
Try
If Not IsNothing(My.Application.Globix.DTEXCLUDE_FILES) Then
For Each row As DataRow In My.Application.Globix.DTEXCLUDE_FILES.Rows
Dim content As String = row.Item(0).ToString.ToLower
If e.FullPath.ToLower.Contains(content) Then
Exit Sub
End If
Next
End If
Dim handleType As String
If e.FullPath.ToLower.EndsWith(".msg") Then
handleType = "|FW_OUTLOOK_MESSAGE|"
Else
handleType = "|FW_SIMPLEINDEXER|"
End If
'Die Datei übergeben
Logger.Info(">> OnCreated-File:" & e.FullPath)
If FileHandle.Decide_FileHandle(e.FullPath, handleType) = True Then
My.Application.Globix.NEW_FILES = True
End If
Catch ex As Exception
Logger.Error(ex.Message)
MsgBox(ex.Message, MsgBoxStyle.Critical, "Error in folder_watch_Created")
End Try
End Sub
End Class