ZooFlow: Clean up, faster search
This commit is contained in:
193
GUIs.ZooFlow/Modules/Globix/ClassFolderwatcher.vb
Normal file
193
GUIs.ZooFlow/Modules/Globix/ClassFolderwatcher.vb
Normal file
@@ -0,0 +1,193 @@
|
||||
Imports System.IO
|
||||
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
|
||||
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
|
||||
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 Sub StartStop_FolderWatch()
|
||||
Try
|
||||
If FWFolderWatcher Is Nothing OrElse FWFolderWatcher.EnableRaisingEvents = False Then
|
||||
' Folderwatch neu instanzieren
|
||||
FWFolderWatcher = StartFolderwatcherForPath(My.Application.Globix.CurrentFolderWatchPath)
|
||||
My.Application.Globix.Folderwatchstarted = True
|
||||
My.UIConfig.Globix.FolderWatchStarted = True
|
||||
My.UIConfigManager.Save()
|
||||
|
||||
End If
|
||||
|
||||
If FWFolderWatcher.EnableRaisingEvents = True Then
|
||||
'Gestartet also Stoppen
|
||||
FWFolderWatcher.EnableRaisingEvents = False
|
||||
My.Application.Globix.Folderwatchstarted = False
|
||||
Logger.Info(" >> FolderWatch gestoppt")
|
||||
My.UIConfig.Globix.FolderWatchStarted = False
|
||||
My.UIConfigManager.Save()
|
||||
End If
|
||||
Catch ex As Exception
|
||||
Logger.Error(ex.Message)
|
||||
MsgBox("Error in StartStop_FolderWatch:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
|
||||
End Try
|
||||
End Sub
|
||||
Public Function StartStop_FolderWatchSCAN() As Integer
|
||||
Try
|
||||
If My.Application.Globix.CURRENT_SCAN_FOLDERWATCH = "" Then
|
||||
If FWFolderWatcher.EnableRaisingEvents = True Then
|
||||
Stop_FWSCAN()
|
||||
Return 0
|
||||
Else
|
||||
If My.Application.User.Language = "de-DE" Then
|
||||
MsgBox("Bitte definieren Sie einen Überwachungsordner für Scan-Eingänge:", MsgBoxStyle.Exclamation)
|
||||
Else
|
||||
MsgBox("Please define a watchfolder for Scanning:", MsgBoxStyle.Exclamation)
|
||||
End If
|
||||
|
||||
Return False
|
||||
End If
|
||||
End If
|
||||
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
|
||||
Dim oWatcher = New FileSystemWatcher(pPath, "*.*") With {
|
||||
.IncludeSubdirectories = False,
|
||||
.EnableRaisingEvents = True
|
||||
}
|
||||
AddHandler oWatcher.Created, AddressOf OnCreated
|
||||
Logger.Debug("Folder Watcher started for Path [{0}]", pPath)
|
||||
|
||||
My.UIConfig.Globix.FolderWatchScanStarted = True
|
||||
My.UIConfigManager.Save()
|
||||
|
||||
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.CheckDuplicateFiles(e.FullPath, "FolderWatch/Scan") Then
|
||||
FileHandle.Decide_FileHandle(e.FullPath, handleType)
|
||||
Else
|
||||
Logger.Info(">> Folderwatcher: File already exists:" & e.FullPath)
|
||||
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
|
||||
Reference in New Issue
Block a user