FileFlow/Global_Indexer/ClassFolderWatcher.vb

207 lines
9.1 KiB
VB.net

Imports System.IO
Imports Independentsoft
Imports System.Threading
Public Class ClassFolderWatcher
Public Shared FolderWatcher As FileSystemWatcher
Public Shared FolderWatcher_SCAN As FileSystemWatcher
Public Shared Function Restart_FolderWatch()
Try
If FolderWatcher.EnableRaisingEvents = True Then
'Gestartet also Stoppen
FolderWatcher.EnableRaisingEvents = False
FW_started = False
'FolderWatch neu instanzieren
FolderWatcher = New System.IO.FileSystemWatcher(CURRENT_FOLDERWATCH, "*.*")
ClassLogger.Add(" >> FolderWatch neu instanziert", False)
FolderWatcher.IncludeSubdirectories = False
FolderWatcher.EnableRaisingEvents = True
AddHandler FolderWatcher.Created, AddressOf OnCreated
FW_started = True
'SaveConfigValue("FW_started", "True")
CONFIG.Config.FolderWatchStarted = True
CONFIG.Save()
End If
Catch ex As Exception
ClassLogger.Add($"Error in Restart_FolderWatch: {ex.Message}", False)
End Try
End Function
Public Shared Function Restart_FolderWatchSCAN()
Try
If FolderWatcher_SCAN.EnableRaisingEvents = True Then
'Gestartet also Stoppen
FolderWatcher_SCAN.EnableRaisingEvents = False
'FolderWatch neu instanzieren
FolderWatcher_SCAN = New System.IO.FileSystemWatcher(CURRENT_SCAN_FOLDERWATCH, "*.*")
ClassLogger.Add(" >> FolderWatchScan neu instanziert", False)
FolderWatcher_SCAN.IncludeSubdirectories = False
FolderWatcher_SCAN.EnableRaisingEvents = True
AddHandler FolderWatcher_SCAN.Created, AddressOf OnCreated
'SaveConfigValue("FWSCAN_started", "True")
CONFIG.Config.FolderWatchScanStarted = True
CONFIG.Save()
End If
Catch ex As Exception
ClassLogger.Add($"Error in Restart_FolderWatchSCAN: {ex.Message}", False)
End Try
End Function
Public Shared Function StartStop_FolderWatch()
Try
If CURRENT_FOLDERWATCH = "" Then
'MsgBox("Bitte definieren Sie einen Überwachungsordner:", MsgBoxStyle.Exclamation)
Return False
End If
If FolderWatcher Is Nothing Then
FolderWatcher = New System.IO.FileSystemWatcher(CURRENT_FOLDERWATCH, "*.*")
ClassLogger.Add(" >> FolderWatch Gestartet", False)
FolderWatcher.IncludeSubdirectories = False
FolderWatcher.EnableRaisingEvents = True
AddHandler FolderWatcher.Created, AddressOf OnCreated
FW_started = True
'SaveConfigValue("FW_started", "True")
CONFIG.Config.FolderWatchStarted = True
CONFIG.Save()
Return 1
End If
If FolderWatcher.EnableRaisingEvents = False Then
' Dim watcher As New FileSystemWatcher()
' watcher.Path = CURRENT_FOLDERWATCH
FolderWatcher = New System.IO.FileSystemWatcher(CURRENT_FOLDERWATCH, "*.*")
ClassLogger.Add(" >> FolderWatch Gestartet", False)
FolderWatcher.IncludeSubdirectories = False
FolderWatcher.EnableRaisingEvents = True
AddHandler FolderWatcher.Created, AddressOf OnCreated
FW_started = True
'SaveConfigValue("FW_started", "True")
CONFIG.Config.FolderWatchStarted = True
CONFIG.Save()
Return 1
Else
'Gestartet also Stoppen
FolderWatcher.EnableRaisingEvents = False
FW_started = False
ClassLogger.Add(" >> FolderWatch gestoppt", False)
'SaveConfigValue("FW_started", "False")
CONFIG.Config.FolderWatchStarted = False
CONFIG.Save()
Return 0
End If
'If watcher.EnableRaisingEvents = False Then
' watcher = New System.IO.FileSystemWatcher(CURRENT_FOLDERWATCH, "*.*")
' ClassLogger.Add(" - vFolderWatch.Gestartet", False)
' watcher.IncludeSubdirectories = False
' watcher.EnableRaisingEvents = True
' AddHandler watcher.Created, AddressOf OnCreated
' Return 1
'Else
' 'Gestartet also Stoppen
' watcher.EnableRaisingEvents = False
' Return 0
'End If
Catch ex As Exception
MsgBox("Error in StartStop_FolderWatch:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
Return 99
End Try
End Function
Public Shared Function StartStop_FolderWatchSCAN()
Try
If CURRENT_SCAN_FOLDERWATCH = "" Then
If FolderWatcher.EnableRaisingEvents = True Then
Stop_FWSCAN()
Return 0
Else
If 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 FolderWatcher_SCAN Is Nothing Then
FolderWatcher_SCAN = New System.IO.FileSystemWatcher(CURRENT_SCAN_FOLDERWATCH, "*.*")
ClassLogger.Add(" >> FolderWatch Scan Gestartet", False)
FolderWatcher_SCAN.IncludeSubdirectories = False
FolderWatcher_SCAN.EnableRaisingEvents = True
AddHandler FolderWatcher_SCAN.Created, AddressOf OnCreated
CONFIG.Config.FolderWatchScanStarted = True
CONFIG.Save()
Return 1
End If
If FolderWatcher_SCAN.EnableRaisingEvents = False Then
' Dim watcher As New FileSystemWatcher()
' watcher.Path = CURRENT_FOLDERWATCH
FolderWatcher_SCAN = New System.IO.FileSystemWatcher(CURRENT_SCAN_FOLDERWATCH, "*.*")
ClassLogger.Add(" >> FolderWatch Scan Gestartet", False)
FolderWatcher_SCAN.IncludeSubdirectories = False
FolderWatcher_SCAN.EnableRaisingEvents = True
AddHandler FolderWatcher_SCAN.Created, AddressOf OnCreated
CONFIG.Config.FolderWatchScanStarted = True
CONFIG.Save()
Return 1
Else
'Gestartet also Stoppen
FolderWatcher_SCAN.EnableRaisingEvents = False
ClassLogger.Add(" >> FolderWatch Scan gestoppt", False)
'SaveConfigValue("FWSCAN_started", "False")
CONFIG.Config.FolderWatchScanStarted = False
CONFIG.Save()
Return 0
End If
Catch ex As Exception
MsgBox("Error in StartStop_FolderWatchSCAN:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
Return 99
End Try
End Function
Public Shared Function Stop_FWSCAN()
If FolderWatcher.EnableRaisingEvents = True Then
'Gestartet also Stoppen
FolderWatcher.EnableRaisingEvents = False
FW_started = False
ClassLogger.Add(" >> FolderWatch gestoppt", False)
'SaveConfigValue("FW_started", "False")
CONFIG.Config.FolderWatchStarted = True
CONFIG.Save()
Return True
Else
Return False
End If
End Function
Private Shared Sub OnCreated(source As Object, e As FileSystemEventArgs)
If ClassDatabase.DatabaseConnectionTimeout = True Then
ClassLogger.Add(">> File handling aborted because of database timeout error!", False)
Exit Sub
End If
Try
For Each row As DataRow In DTEXCLUDE_FILES.Rows
Dim content As String = row.Item(0).ToString.ToLower
If e.FullPath.ToLower.Contains(content) Then
Exit Sub
End If
Next
Dim handleType As String
If e.FullPath.ToLower.EndsWith(".msg") Then
handleType = "|FW_OUTLOOK_MESSAGE|"
Else
handleType = "|FW_SIMPLEINDEXER|"
End If
'Die Datei übergeben
If LogErrorsOnly = False Then ClassLogger.Add(">> OnCreated-File:" & e.FullPath, False)
If ClassIndexFunctions.FileExistsinDropTable(e.FullPath) = False Then
ClassFilehandle.Decide_FileHandle(e.FullPath, handleType)
Else
ClassLogger.Add(">> Folderwatcher: File already exists:" & e.FullPath, False)
End If
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical, "Error in folder_watch_Created")
End Try
End Sub
End Class