Show Date in index confirmation, add new hash logic to all paths, fix hash empty when using folder watch #GI-12

This commit is contained in:
Jonathan Jenne 2021-05-04 12:22:38 +02:00
parent 0692d4e295
commit d771895b43
4 changed files with 118 additions and 52 deletions

View File

@ -109,7 +109,7 @@ Public Class ClassDatabase
Return Nothing Return Nothing
End Try End Try
End Function End Function
Public Shared Function Return_Datatable_CS(sql_command As String, ConString As String, Optional userInput As Boolean = False) Public Shared Function Return_Datatable_CS(sql_command As String, ConString As String, Optional userInput As Boolean = False) As DataTable
Try Try
Dim SQLconnect As New SqlConnection Dim SQLconnect As New SqlConnection
Dim SQLcommand As SqlCommand Dim SQLcommand As SqlCommand
@ -138,7 +138,7 @@ Public Class ClassDatabase
LOGGER.Info("#SQL: " & sql_command) LOGGER.Info("#SQL: " & sql_command)
End If End If
Return False Return Nothing
Catch ex As Exception Catch ex As Exception
If userInput = True Then If userInput = True Then
MsgBox("Error in Return_Datatable_CS - Error-Message:" & vbNewLine & ex.Message & vbNewLine & "SQL-Command:" & vbNewLine & sql_command, MsgBoxStyle.Critical) MsgBox("Error in Return_Datatable_CS - Error-Message:" & vbNewLine & ex.Message & vbNewLine & "SQL-Command:" & vbNewLine & sql_command, MsgBoxStyle.Critical)

View File

@ -122,7 +122,7 @@ Public Class ClassFolderWatcher
End If End If
End If End If
If FolderWatcher_SCAN Is Nothing Then If FolderWatcher_SCAN Is Nothing Then
FolderWatcher_SCAN = New System.IO.FileSystemWatcher(CURRENT_SCAN_FOLDERWATCH, "*.*") FolderWatcher_SCAN = New FileSystemWatcher(CURRENT_SCAN_FOLDERWATCH, "*.*")
LOGGER.Info(" >> FolderWatch Scan Gestartet") LOGGER.Info(" >> FolderWatch Scan Gestartet")
FolderWatcher_SCAN.IncludeSubdirectories = False FolderWatcher_SCAN.IncludeSubdirectories = False
FolderWatcher_SCAN.EnableRaisingEvents = True FolderWatcher_SCAN.EnableRaisingEvents = True
@ -134,7 +134,7 @@ Public Class ClassFolderWatcher
If FolderWatcher_SCAN.EnableRaisingEvents = False Then If FolderWatcher_SCAN.EnableRaisingEvents = False Then
' Dim watcher As New FileSystemWatcher() ' Dim watcher As New FileSystemWatcher()
' watcher.Path = CURRENT_FOLDERWATCH ' watcher.Path = CURRENT_FOLDERWATCH
FolderWatcher_SCAN = New System.IO.FileSystemWatcher(CURRENT_SCAN_FOLDERWATCH, "*.*") FolderWatcher_SCAN = New FileSystemWatcher(CURRENT_SCAN_FOLDERWATCH, "*.*")
LOGGER.Info(" >> FolderWatch Scan Gestartet") LOGGER.Info(" >> FolderWatch Scan Gestartet")
FolderWatcher_SCAN.IncludeSubdirectories = False FolderWatcher_SCAN.IncludeSubdirectories = False
FolderWatcher_SCAN.EnableRaisingEvents = True FolderWatcher_SCAN.EnableRaisingEvents = True
@ -185,18 +185,32 @@ Public Class ClassFolderWatcher
End If End If
Next Next
Dim handleType As String Dim oHandleType As String
If e.FullPath.ToLower.EndsWith(".msg") Then If e.FullPath.ToLower.EndsWith(".msg") Then
handleType = "|FW_OUTLOOK_MESSAGE|" oHandleType = "|FW_OUTLOOK_MESSAGE|"
Else Else
handleType = "|FW_SIMPLEINDEXER|" oHandleType = "|FW_SIMPLEINDEXER|"
End If End If
'Die Datei übergeben 'Die Datei übergeben
LOGGER.Info(">> OnCreated-File:" & e.FullPath) LOGGER.Info(">> OnCreated-File:" & e.FullPath)
If ClassIndexFunctions.FileExistsinDropTable(e.FullPath) = False Then
ClassFilehandle.Decide_FileHandle(e.FullPath, handleType) Dim oFileExists As Date = ClassIndexFunctions.FileExistsinDropTable(e.FullPath)
If IsNothing(oFileExists) Then
ClassFilehandle.Decide_FileHandle(e.FullPath, oHandleType)
Else Else
LOGGER.Info(">> Folderwatcher: File already exists:" & e.FullPath) Dim oResult As DialogResult
Dim oDate As String = oFileExists.ToString("d")
If USER_LANGUAGE = "de-DE" Then
oResult = MsgBox($"Die Datei wurde bereits am [{oDate}] verarbeitet. Wollen Sie die gleiche Datei noch einmal verarbeiten?", MsgBoxStyle.Question Or MsgBoxStyle.YesNo, "GLOBIX - FolderWatch")
Else
oResult = MsgBox($"This file has already been processed at [{oDate}]. Do you want to process the same file again?", MsgBoxStyle.Question Or MsgBoxStyle.YesNo, "GLOBIX - FolderWatch")
End If
If oResult = DialogResult.Yes Then
ClassFilehandle.Decide_FileHandle(e.FullPath, oHandleType)
End If
End If End If
Catch ex As Exception Catch ex As Exception

View File

@ -1,5 +1,5 @@
Public Class ClassIndexFunctions Public Class ClassIndexFunctions
Public Shared Function FileExistsinDropTable(Filename As String) Public Shared Function FileExistsinDropTable(Filename As String) As DateTime
Dim oSQL As String Dim oSQL As String
Dim oHash As String Dim oHash As String
@ -15,20 +15,30 @@
oHash = "" oHash = ""
End Try End Try
oSQL = "SELECT COUNT(*) FROM TBGI_FILES_USER WHERE UPPER(FILE_HASH) = UPPER('" & oHash & "') AND WORKED = 0" oSQL = "SELECT * FROM TBGI_FILES_USER WHERE UPPER(FILE_HASH) = UPPER('" & oHash & "') AND WORKED = 0 ORDER BY ADDED_WHEN"
Dim oResult = ClassDatabase.Execute_Scalar(oSQL, MyConnectionString, True) Dim oResult As DataTable = ClassDatabase.Return_Datatable_CS(oSQL, MyConnectionString, True)
If oResult = 0 Then If oResult Is Nothing Then
oSQL = "SELECT COUNT(*) FROM TBGI_HISTORY WHERE UPPER(FILE_HASH) = UPPER('" & oHash & "')" Return Nothing
oResult = ClassDatabase.Execute_Scalar(oSQL, MyConnectionString, True) End If
If oResult = 0 Then If oResult.Rows.Count = 0 Then
Return False oSQL = "SELECT * FROM TBGI_HISTORY WHERE UPPER(FILE_HASH) = UPPER('" & oHash & "') ORDER BY ADDED_WHEN"
oResult = ClassDatabase.Return_Datatable_CS(oSQL, MyConnectionString, True)
If oResult Is Nothing Then
Return Nothing
End If
If oResult.Rows.Count = 0 Then
Return Nothing
Else Else
Return True Dim oFirstRow As DataRow = oResult.Rows.Item(0)
Return oFirstRow.Item("ADDED_WHEN")
End If End If
Else Else
Return True Dim oFirstRow As DataRow = oResult.Rows.Item(0)
Return oFirstRow.Item("ADDED_WHEN")
End If End If
Catch ex As Exception Catch ex As Exception
MsgBox("Error in FileExistsinDropTable - Error-Message:" & vbNewLine & ex.Message & vbNewLine & "SQL-Command:" & vbNewLine & oSQL, MsgBoxStyle.Critical) MsgBox("Error in FileExistsinDropTable - Error-Message:" & vbNewLine & ex.Message & vbNewLine & "SQL-Command:" & vbNewLine & oSQL, MsgBoxStyle.Critical)

View File

@ -168,26 +168,25 @@ Public Class frmStart
Dim oLastPipe = oFiledropString.LastIndexOf("|") Dim oLastPipe = oFiledropString.LastIndexOf("|")
Dim oHandleType As String = oFiledropString.Substring(0, oLastPipe + 1) Dim oHandleType As String = oFiledropString.Substring(0, oLastPipe + 1)
Dim oFilename As String = oFiledropString.Substring(oLastPipe + 1) Dim oFilename As String = oFiledropString.Substring(oLastPipe + 1)
Dim oFileExists As Boolean = ClassIndexFunctions.FileExistsinDropTable(oFilename) Dim oFileExists As Date = ClassIndexFunctions.FileExistsinDropTable(oFilename)
If oFileExists = False Then If IsNothing(oFileExists) Then
ClassFilehandle.Decide_FileHandle(oFilename, oHandleType) ClassFilehandle.Decide_FileHandle(oFilename, oHandleType)
oIndex += 1 oIndex += 1
ElseIf oFileExists Then Else
Dim oResult As DialogResult Dim oResult As DialogResult
Dim oDate As String = oFileExists.ToString("d")
If USER_LANGUAGE = "de-DE" Then If USER_LANGUAGE = "de-DE" Then
oResult = MsgBox("Die Datei wurde bereits verarbeitet. Wollen Sie die gleiche Datei noch einmal verarbeiten?", MsgBoxStyle.Question Or MsgBoxStyle.YesNo, Text) oResult = MsgBox($"Die Datei wurde bereits am [{oDate}] verarbeitet. Wollen Sie die gleiche Datei noch einmal verarbeiten?", MsgBoxStyle.Question Or MsgBoxStyle.YesNo, "GLOBIX - FolderWatch")
Else Else
oResult = MsgBox("This file has already been processed. Do you want to process the same file again?", MsgBoxStyle.Question Or MsgBoxStyle.YesNo, Text) oResult = MsgBox($"This file has already been processed at [{oDate}]. Do you want to process the same file again?", MsgBoxStyle.Question Or MsgBoxStyle.YesNo, "GLOBIX - FolderWatch")
End If End If
If oResult = DialogResult.Yes Then If oResult = DialogResult.Yes Then
ClassFilehandle.Decide_FileHandle(oFilename, oHandleType) ClassFilehandle.Decide_FileHandle(oFilename, oHandleType)
oIndex += 1 oIndex += 1
End If End If
Else
End If End If
End If End If
Next Next
@ -216,7 +215,7 @@ Public Class frmStart
CURRENT_FILENAME = Filerow.Item("FILENAME2WORK") CURRENT_FILENAME = Filerow.Item("FILENAME2WORK")
CURRENT_WORKFILE_GUID = Filerow.Item(0) CURRENT_WORKFILE_GUID = Filerow.Item(0)
CURRENT_WORKFILE = Filerow.Item("FILENAME2WORK") CURRENT_WORKFILE = Filerow.Item("FILENAME2WORK")
CURRENT_WORKFILE_HASH = Filerow.Item("FILE_HASH") CURRENT_WORKFILE_HASH = NotNull(Filerow.Item("FILE_HASH"), "")
LOGGER.Info(">> CURRENT_WORKFILE: " & CURRENT_WORKFILE) LOGGER.Info(">> CURRENT_WORKFILE: " & CURRENT_WORKFILE)
If File.Exists(CURRENT_WORKFILE) = True And DTACTUAL_FILES.Rows.Count > 0 Then If File.Exists(CURRENT_WORKFILE) = True And DTACTUAL_FILES.Rows.Count > 0 Then
@ -356,29 +355,49 @@ Public Class frmStart
LOGGER.Info(">> FWSCAN started - Checking file:" & CURRENT_SCAN_FOLDERWATCH) LOGGER.Info(">> FWSCAN started - Checking file:" & CURRENT_SCAN_FOLDERWATCH)
Dim fileEntries As String() = Directory.GetFiles(CURRENT_SCAN_FOLDERWATCH) Dim fileEntries As String() = Directory.GetFiles(CURRENT_SCAN_FOLDERWATCH)
' Process the list of files found in the directory. ' Process the list of files found in the directory.
Dim fileName As String Dim oFileName As String
For Each fileName In fileEntries For Each oFileName In fileEntries
LOGGER.Info(">> Scanfolder after startup: Checking file:" & fileName) LOGGER.Info(">> Scanfolder after startup: Checking file:" & oFileName)
For Each row As DataRow In DTEXCLUDE_FILES.Rows For Each row As DataRow In DTEXCLUDE_FILES.Rows
Dim content As String = row.Item(0).ToString.ToLower Dim content As String = row.Item(0).ToString.ToLower
If fileName.ToLower.Contains(content) Then If oFileName.ToLower.Contains(content) Then
Exit Sub Exit Sub
End If End If
Next Next
Dim handleType As String Dim oHandleType As String
If fileName.ToLower.EndsWith(".msg") Then If oFileName.ToLower.EndsWith(".msg") Then
handleType = "|FW_OUTLOOK_MESSAGE|" oHandleType = "|FW_OUTLOOK_MESSAGE|"
Else Else
handleType = "|FW_SIMPLEINDEXER|" oHandleType = "|FW_SIMPLEINDEXER|"
End If End If
'Die Datei übergeben 'Die Datei übergeben
LOGGER.Info(">> Adding file from Scanfolder after startup:" & fileName) LOGGER.Info(">> Adding file from Scanfolder after startup:" & oFileName)
If ClassIndexFunctions.FileExistsinDropTable(fileName) = False Then
ClassFilehandle.Decide_FileHandle(fileName, handleType) Dim oFileExists As Date = ClassIndexFunctions.FileExistsinDropTable(oFileName)
If IsNothing(oFileExists) Then
ClassFilehandle.Decide_FileHandle(oFileName, oHandleType)
Else Else
LOGGER.Info(">> Scanfolder Startup: File already exists:" & fileName) Dim oResult As DialogResult
Dim oDate As String = oFileExists.ToString("d")
If USER_LANGUAGE = "de-DE" Then
oResult = MsgBox($"Die Datei wurde bereits am [{oDate}] verarbeitet. Wollen Sie die gleiche Datei noch einmal verarbeiten?", MsgBoxStyle.Question Or MsgBoxStyle.YesNo, "GLOBIX - FolderWatch")
Else
oResult = MsgBox($"This file has already been processed at [{oDate}]. Do you want to process the same file again?", MsgBoxStyle.Question Or MsgBoxStyle.YesNo, "GLOBIX - FolderWatch")
End If
If oResult = DialogResult.Yes Then
ClassFilehandle.Decide_FileHandle(oFileName, oHandleType)
End If
End If End If
Next fileName
'If ClassIndexFunctions.FileExistsinDropTable(fileName) = False Then
' ClassFilehandle.Decide_FileHandle(fileName, handleType)
'Else
' LOGGER.Info(">> Scanfolder Startup: File already exists:" & fileName)
'End If
Next oFileName
Else Else
LOGGER.Info(">> FWSCAN not started") LOGGER.Info(">> FWSCAN not started")
@ -393,29 +412,50 @@ Public Class frmStart
LOGGER.Info(">> FW_started started - Checking file:" & CURRENT_FOLDERWATCH) LOGGER.Info(">> FW_started started - Checking file:" & CURRENT_FOLDERWATCH)
Dim fileEntries As String() = Directory.GetFiles(CURRENT_FOLDERWATCH) Dim fileEntries As String() = Directory.GetFiles(CURRENT_FOLDERWATCH)
' Process the list of files found in the directory. ' Process the list of files found in the directory.
Dim fileName As String Dim oFileName As String
For Each fileName In fileEntries For Each oFileName In fileEntries
LOGGER.Info(">> Folderwach after startup: Checking file:" & fileName) LOGGER.Info(">> Folderwach after startup: Checking file:" & oFileName)
For Each row As DataRow In DTEXCLUDE_FILES.Rows For Each row As DataRow In DTEXCLUDE_FILES.Rows
Dim content As String = row.Item(0).ToString.ToLower Dim content As String = row.Item(0).ToString.ToLower
If fileName.ToLower.Contains(content) Then If oFileName.ToLower.Contains(content) Then
Exit Sub Exit Sub
End If End If
Next Next
Dim handleType As String Dim handleType As String
If fileName.ToLower.EndsWith(".msg") Then If oFileName.ToLower.EndsWith(".msg") Then
handleType = "|FW_OUTLOOK_MESSAGE|" handleType = "|FW_OUTLOOK_MESSAGE|"
Else Else
handleType = "|FW_SIMPLEINDEXER|" handleType = "|FW_SIMPLEINDEXER|"
End If End If
'Die Datei übergeben 'Die Datei übergeben
LOGGER.Info(">> Adding file from Folderwatch after startup:" & fileName) LOGGER.Info(">> Adding file from Folderwatch after startup:" & oFileName)
If ClassIndexFunctions.FileExistsinDropTable(fileName) = False Then
ClassFilehandle.Decide_FileHandle(fileName, handleType) 'If ClassIndexFunctions.FileExistsinDropTable(fileName) = False Then
' ClassFilehandle.Decide_FileHandle(fileName, handleType)
'Else
' LOGGER.Info(">> Folderwatch Startup: File already exists:" & fileName)
'End If
Dim oFileExists As Date = ClassIndexFunctions.FileExistsinDropTable(oFileName)
If IsNothing(oFileExists) Then
ClassFilehandle.Decide_FileHandle(oFileName, handleType)
Else Else
LOGGER.Info(">> Folderwatch Startup: File already exists:" & fileName) Dim oResult As DialogResult
Dim oDate As String = oFileName.ToString("d")
If USER_LANGUAGE = "de-DE" Then
oResult = MsgBox($"Die Datei wurde bereits am [{oDate}] verarbeitet. Wollen Sie die gleiche Datei noch einmal verarbeiten?", MsgBoxStyle.Question Or MsgBoxStyle.YesNo, "GLOBIX - FolderWatch")
Else
oResult = MsgBox($"This file has already been processed at [{oDate}]. Do you want to process the same file again?", MsgBoxStyle.Question Or MsgBoxStyle.YesNo, "GLOBIX - FolderWatch")
End If
If oResult = DialogResult.Yes Then
ClassFilehandle.Decide_FileHandle(oFileName, handleType)
End If
End If End If
Next fileName
Next oFileName
Else Else
LOGGER.Info(">> FW_started not started") LOGGER.Info(">> FW_started not started")
@ -512,9 +552,11 @@ Public Class frmStart
Dim fileexists As Boolean = System.IO.File.Exists(FileForWork) Dim fileexists As Boolean = System.IO.File.Exists(FileForWork)
If fileInUse = False Then If fileInUse = False Then
If fileexists = True Then If fileexists = True Then
CURRENT_WORKFILE = FileForWork
CURRENT_FILENAME = FileForWork CURRENT_FILENAME = FileForWork
CURRENT_WORKFILE = FileForWork
CURRENT_WORKFILE_GUID = row.Item("GUID") CURRENT_WORKFILE_GUID = row.Item("GUID")
CURRENT_WORKFILE_HASH = row.Item("FILE_HASH")
Open_IndexDialog() Open_IndexDialog()
Else Else
LOGGER.Info(">> File not existing - Row will be deleted!") LOGGER.Info(">> File not existing - Row will be deleted!")