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
End Try
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
Dim SQLconnect As New SqlConnection
Dim SQLcommand As SqlCommand
@ -138,7 +138,7 @@ Public Class ClassDatabase
LOGGER.Info("#SQL: " & sql_command)
End If
Return False
Return Nothing
Catch ex As Exception
If userInput = True Then
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
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")
FolderWatcher_SCAN.IncludeSubdirectories = False
FolderWatcher_SCAN.EnableRaisingEvents = True
@ -134,7 +134,7 @@ Public Class ClassFolderWatcher
If FolderWatcher_SCAN.EnableRaisingEvents = False Then
' Dim watcher As New FileSystemWatcher()
' 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")
FolderWatcher_SCAN.IncludeSubdirectories = False
FolderWatcher_SCAN.EnableRaisingEvents = True
@ -185,18 +185,32 @@ Public Class ClassFolderWatcher
End If
Next
Dim handleType As String
Dim oHandleType As String
If e.FullPath.ToLower.EndsWith(".msg") Then
handleType = "|FW_OUTLOOK_MESSAGE|"
oHandleType = "|FW_OUTLOOK_MESSAGE|"
Else
handleType = "|FW_SIMPLEINDEXER|"
oHandleType = "|FW_SIMPLEINDEXER|"
End If
'Die Datei übergeben
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
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
Catch ex As Exception

View File

@ -1,5 +1,5 @@
Public Class ClassIndexFunctions
Public Shared Function FileExistsinDropTable(Filename As String)
Public Shared Function FileExistsinDropTable(Filename As String) As DateTime
Dim oSQL As String
Dim oHash As String
@ -15,20 +15,30 @@
oHash = ""
End Try
oSQL = "SELECT COUNT(*) FROM TBGI_FILES_USER WHERE UPPER(FILE_HASH) = UPPER('" & oHash & "') AND WORKED = 0"
Dim oResult = ClassDatabase.Execute_Scalar(oSQL, MyConnectionString, True)
oSQL = "SELECT * FROM TBGI_FILES_USER WHERE UPPER(FILE_HASH) = UPPER('" & oHash & "') AND WORKED = 0 ORDER BY ADDED_WHEN"
Dim oResult As DataTable = ClassDatabase.Return_Datatable_CS(oSQL, MyConnectionString, True)
If oResult = 0 Then
oSQL = "SELECT COUNT(*) FROM TBGI_HISTORY WHERE UPPER(FILE_HASH) = UPPER('" & oHash & "')"
oResult = ClassDatabase.Execute_Scalar(oSQL, MyConnectionString, True)
If oResult Is Nothing Then
Return Nothing
End If
If oResult = 0 Then
Return False
If oResult.Rows.Count = 0 Then
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
Return True
Dim oFirstRow As DataRow = oResult.Rows.Item(0)
Return oFirstRow.Item("ADDED_WHEN")
End If
Else
Return True
Dim oFirstRow As DataRow = oResult.Rows.Item(0)
Return oFirstRow.Item("ADDED_WHEN")
End If
Catch ex As Exception
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 oHandleType As String = oFiledropString.Substring(0, 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)
oIndex += 1
ElseIf oFileExists Then
Else
Dim oResult As DialogResult
Dim oDate As String = oFileExists.ToString("d")
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
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
If oResult = DialogResult.Yes Then
ClassFilehandle.Decide_FileHandle(oFilename, oHandleType)
oIndex += 1
End If
Else
End If
End If
Next
@ -216,7 +215,7 @@ Public Class frmStart
CURRENT_FILENAME = Filerow.Item("FILENAME2WORK")
CURRENT_WORKFILE_GUID = Filerow.Item(0)
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)
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)
Dim fileEntries As String() = Directory.GetFiles(CURRENT_SCAN_FOLDERWATCH)
' Process the list of files found in the directory.
Dim fileName As String
For Each fileName In fileEntries
LOGGER.Info(">> Scanfolder after startup: Checking file:" & fileName)
Dim oFileName As String
For Each oFileName In fileEntries
LOGGER.Info(">> Scanfolder after startup: Checking file:" & oFileName)
For Each row As DataRow In DTEXCLUDE_FILES.Rows
Dim content As String = row.Item(0).ToString.ToLower
If fileName.ToLower.Contains(content) Then
If oFileName.ToLower.Contains(content) Then
Exit Sub
End If
Next
Dim handleType As String
If fileName.ToLower.EndsWith(".msg") Then
handleType = "|FW_OUTLOOK_MESSAGE|"
Dim oHandleType As String
If oFileName.ToLower.EndsWith(".msg") Then
oHandleType = "|FW_OUTLOOK_MESSAGE|"
Else
handleType = "|FW_SIMPLEINDEXER|"
oHandleType = "|FW_SIMPLEINDEXER|"
End If
'Die Datei übergeben
LOGGER.Info(">> Adding file from Scanfolder after startup:" & fileName)
If ClassIndexFunctions.FileExistsinDropTable(fileName) = False Then
ClassFilehandle.Decide_FileHandle(fileName, handleType)
LOGGER.Info(">> Adding file from Scanfolder after startup:" & oFileName)
Dim oFileExists As Date = ClassIndexFunctions.FileExistsinDropTable(oFileName)
If IsNothing(oFileExists) Then
ClassFilehandle.Decide_FileHandle(oFileName, oHandleType)
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
Next fileName
If oResult = DialogResult.Yes Then
ClassFilehandle.Decide_FileHandle(oFileName, oHandleType)
End If
End If
'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
LOGGER.Info(">> FWSCAN not started")
@ -393,29 +412,50 @@ Public Class frmStart
LOGGER.Info(">> FW_started started - Checking file:" & CURRENT_FOLDERWATCH)
Dim fileEntries As String() = Directory.GetFiles(CURRENT_FOLDERWATCH)
' Process the list of files found in the directory.
Dim fileName As String
For Each fileName In fileEntries
LOGGER.Info(">> Folderwach after startup: Checking file:" & fileName)
Dim oFileName As String
For Each oFileName In fileEntries
LOGGER.Info(">> Folderwach after startup: Checking file:" & oFileName)
For Each row As DataRow In DTEXCLUDE_FILES.Rows
Dim content As String = row.Item(0).ToString.ToLower
If fileName.ToLower.Contains(content) Then
If oFileName.ToLower.Contains(content) Then
Exit Sub
End If
Next
Dim handleType As String
If fileName.ToLower.EndsWith(".msg") Then
If oFileName.ToLower.EndsWith(".msg") Then
handleType = "|FW_OUTLOOK_MESSAGE|"
Else
handleType = "|FW_SIMPLEINDEXER|"
End If
'Die Datei übergeben
LOGGER.Info(">> Adding file from Folderwatch after startup:" & fileName)
If ClassIndexFunctions.FileExistsinDropTable(fileName) = False Then
ClassFilehandle.Decide_FileHandle(fileName, handleType)
LOGGER.Info(">> Adding file from Folderwatch after startup:" & oFileName)
'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
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
Next fileName
If oResult = DialogResult.Yes Then
ClassFilehandle.Decide_FileHandle(oFileName, handleType)
End If
End If
Next oFileName
Else
LOGGER.Info(">> FW_started not started")
@ -512,9 +552,11 @@ Public Class frmStart
Dim fileexists As Boolean = System.IO.File.Exists(FileForWork)
If fileInUse = False Then
If fileexists = True Then
CURRENT_WORKFILE = FileForWork
CURRENT_FILENAME = FileForWork
CURRENT_WORKFILE = FileForWork
CURRENT_WORKFILE_GUID = row.Item("GUID")
CURRENT_WORKFILE_HASH = row.Item("FILE_HASH")
Open_IndexDialog()
Else
LOGGER.Info(">> File not existing - Row will be deleted!")