diff --git a/GUIs.ZooFlow/App.config b/GUIs.ZooFlow/App.config index 1752fe92..4668eed0 100644 --- a/GUIs.ZooFlow/App.config +++ b/GUIs.ZooFlow/App.config @@ -5,19 +5,14 @@
- +
- - - + + + @@ -57,7 +52,7 @@ - + System diff --git a/GUIs.ZooFlow/Globix/ClassExclusions.vb b/GUIs.ZooFlow/Globix/ClassExclusions.vb new file mode 100644 index 00000000..6bb0eece --- /dev/null +++ b/GUIs.ZooFlow/Globix/ClassExclusions.vb @@ -0,0 +1,56 @@ +Public Class ClassExclusions + + Public Function Load(ExclusionPath As String) As Boolean + Dim rowresult As String = "" + Try + 'if file doesn't exist, create the file with its default xml table + If Not IO.File.Exists(My.Application.Globix.PATH_FileExclusions) Then + My.Application.Globix.DTEXCLUDE_FILES = CreateExclusionTable() + My.Application.Globix.DTEXCLUDE_FILES.WriteXml(My.Application.Globix.PATH_FileExclusions) + End If + My.Application.Globix.DTEXCLUDE_FILES = GetTablefromXML(ExclusionPath) + + Return True + Catch ex As Exception + MsgBox("Error in ModuleUserSavings-LoadFileExclusion" & vbNewLine & ex.Message, MsgBoxStyle.Critical) + Return False + End Try + End Function + Private Function CreateExclusionTable() As DataTable + Try + Dim oMyExclusions As New DataTable + oMyExclusions.TableName = "TBEXCLUSION" + + ' Create two columns, ID and Name. + oMyExclusions.Columns.Add("FILE_CONTAIN", GetType(System.String)) + Dim newRow As DataRow = oMyExclusions.NewRow() + newRow("FILE_CONTAIN") = "Thumbs" + oMyExclusions.Rows.Add(newRow) + Dim newRow1 As DataRow = oMyExclusions.NewRow() + newRow1("FILE_CONTAIN") = "\~$" + oMyExclusions.Rows.Add(newRow1) + Dim newRow2 As DataRow = oMyExclusions.NewRow() + newRow2("FILE_CONTAIN") = ".db" + oMyExclusions.Rows.Add(newRow2) + Dim newRow3 As DataRow = oMyExclusions.NewRow() + newRow3("FILE_CONTAIN") = "desktop.ini" + oMyExclusions.Rows.Add(newRow3) + oMyExclusions.AcceptChanges() + Return oMyExclusions + Catch ex As Exception + MsgBox("Error in CreateExclusionTable" & vbNewLine & ex.Message, MsgBoxStyle.Critical) + Return Nothing + End Try + End Function + + Private Function GetTablefromXML(FileExclusionPath As String) As DataTable + Try + Dim DS As New DataSet + DS.ReadXml(FileExclusionPath) + Return DS.Tables(0) + Catch ex As Exception + MsgBox("Error in GetTablefromXML" & vbNewLine & ex.Message, MsgBoxStyle.Critical) + Return Nothing + End Try + End Function +End Class diff --git a/GUIs.ZooFlow/Globix/ClassFilehandle.vb b/GUIs.ZooFlow/Globix/ClassFilehandle.vb index 346610e6..e72133af 100644 --- a/GUIs.ZooFlow/Globix/ClassFilehandle.vb +++ b/GUIs.ZooFlow/Globix/ClassFilehandle.vb @@ -23,6 +23,33 @@ Public Class ClassFilehandle Dim r = New Regex(String.Format("[{0}]", Regex.Escape(regexSearch))) Return r.Replace(Input, replacement) End Function + Public Function CheckDuplicateFiles(Filepath As String, ModuleTitle As String) + Dim oFileInfo As New FileInfo(Filepath) + Dim oFilename As String = oFileInfo.Name + Dim oFileExists As Date = ClassHelpers.FileExistsinDropTable(Filepath) + + If oFileExists.Equals(Date.MinValue) Then + Return True + Else + Dim oResult As DialogResult + Dim oDate As String = oFileExists.ToString("d") + Dim oBoxTitle = $"GLOBIX - {ModuleTitle}" + Dim oBoxOptions = MsgBoxStyle.Question Or MsgBoxStyle.YesNo + + If My.Application.User.Language = "de-DE" Then + oResult = MsgBox($"Die Datei [{oFilename}] wurde bereits am [{oDate}] verarbeitet. Wollen Sie die gleiche Datei noch einmal verarbeiten?", oBoxOptions, oBoxTitle) + Else + oResult = MsgBox($"The file [{oFilename}] has already been processed at [{oDate}]. Do you want to process the same file again?", oBoxOptions, oBoxTitle) + End If + + If oResult = DialogResult.Yes Then + Return True + End If + End If + + Return False + End Function + Public Function Decide_FileHandle(filename As String, handletype As String) As Boolean Try If filename.EndsWith(".msg") Then diff --git a/GUIs.ZooFlow/Globix/ClassFolderwatcher.vb b/GUIs.ZooFlow/Globix/ClassFolderwatcher.vb index 99404fe7..fe11c42c 100644 --- a/GUIs.ZooFlow/Globix/ClassFolderwatcher.vb +++ b/GUIs.ZooFlow/Globix/ClassFolderwatcher.vb @@ -182,7 +182,8 @@ Public Class ClassFolderwatcher End If 'Die Datei übergeben Logger.Info(">> OnCreated-File:" & e.FullPath) - If My.Application.Globix.FileExistsinDropTable(e.FullPath) = False Then + + If clsFilehandle.CheckDuplicateFiles(e.FullPath, "FolderWatch/Scan") Then clsFilehandle.Decide_FileHandle(e.FullPath, handleType) Else Logger.Info(">> Folderwatcher: File already exists:" & e.FullPath) diff --git a/GUIs.ZooFlow/Globix/ClassHelpers.vb b/GUIs.ZooFlow/Globix/ClassHelpers.vb new file mode 100644 index 00000000..355d91d6 --- /dev/null +++ b/GUIs.ZooFlow/Globix/ClassHelpers.vb @@ -0,0 +1,48 @@ +Public Class ClassHelpers + Public Shared Function FileExistsinDropTable(Filename As String) As Date + Dim oSQL As String + Dim oHash As String + Dim oFilesystem As New DigitalData.Modules.Filesystem.File(My.LogConfig) + + Try + If Filename.Contains("'") Then + Filename = Filename.Replace("'", "''") + End If + + Try + oHash = oFilesystem.GetChecksum(Filename) + Catch ex As Exception + oHash = "" + End Try + + oSQL = "SELECT * FROM TBGI_FILES_USER WHERE UPPER(FILE_HASH) = UPPER('" & oHash & "') AND WORKED = 0 ORDER BY ADDED_WHEN" + Dim oResult As DataTable = My.Database.GetDatatable(oSQL) + + If oResult Is Nothing Then + Return Nothing + End If + + If oResult.Rows.Count = 0 Then + oSQL = "SELECT * FROM TBGI_HISTORY WHERE UPPER(FILE_HASH) = UPPER('" & oHash & "') ORDER BY ADDED_WHEN" + oResult = My.Database.GetDatatable(oSQL) + + If oResult Is Nothing Then + Return Nothing + End If + + If oResult.Rows.Count = 0 Then + Return Nothing + Else + Dim oFirstRow As DataRow = oResult.Rows.Item(0) + Return oFirstRow.Item("ADDED_WHEN") + End If + Else + 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) + Return Nothing + End Try + End Function +End Class diff --git a/GUIs.ZooFlow/Globix/State.vb b/GUIs.ZooFlow/Globix/State.vb index 7872a479..0e6db769 100644 --- a/GUIs.ZooFlow/Globix/State.vb +++ b/GUIs.ZooFlow/Globix/State.vb @@ -1,6 +1,7 @@ Imports System.IO Namespace Globix + Public Class State Public Property DT_FUNCTION_REGEX As DataTable Public Property DTACTUAL_FILES As DataTable @@ -42,91 +43,7 @@ Namespace Globix Public Property Folderwatchstarted As Boolean = False Public Property DTEXCLUDE_FILES As DataTable - Public PATH_FileExclusions As String = Path.Combine(Application.UserAppDataPath(), "FileExclusions.xml") - Public Function FileExistsinDropTable(Filename As String) As Boolean - Dim oSQL As String - Try - If Filename.Contains("'") Then - Filename = Filename.Replace("'", "''") - End If - oSQL = "SELECT COUNT(*) FROM TBGI_FILES_USER WHERE UPPER(FILENAME2WORK) = UPPER('" & Filename & "') AND WORKED = 0" - Dim result = My.Database.GetScalarValue(oSQL) - If result >= 1 Then - result = True - Else - result = False - End If - Return result - Catch ex As Exception - MsgBox("Error in FileExistsinDropTable - Error-Message:" & vbNewLine & ex.Message & vbNewLine & "SQL-Command:" & vbNewLine & oSQL, MsgBoxStyle.Critical) - Return Nothing - End Try - - End Function - Public Function LoadFileExclusion() As Boolean - Dim rowresult As String = "" - Try - 'if file doesn't exist, create the file with its default xml table - If Not File.Exists(PATH_FileExclusions) Then - DTEXCLUDE_FILES = CreateExclusionTable() - DTEXCLUDE_FILES.WriteXml(PATH_FileExclusions) - End If - DTEXCLUDE_FILES = GetTablefromXML() - - 'For Each Row As DataRow In DT.Rows - ' rowresult &= Row.Item("FILE_CONTAIN") - ' Select Case Row.Item("FILE_^^CONTAIN") - - ' End Select - - 'Next - Return True - Catch ex As Exception - MsgBox("Error in ModuleUserSavings-LoadFileExclusion" & vbNewLine & ex.Message, MsgBoxStyle.Critical) - Return False - End Try - Return True - - End Function - Private Function CreateExclusionTable() As DataTable - Try - ' Create sample Customers table, in order - ' to demonstrate the behavior of the DataTableReader. - Dim oMyExclusions As New DataTable - oMyExclusions.TableName = "TBEXCLUSION" - - ' Create two columns, ID and Name. - oMyExclusions.Columns.Add("FILE_CONTAIN", GetType(System.String)) - Dim newRow As DataRow = oMyExclusions.NewRow() - newRow("FILE_CONTAIN") = "Thumbs" - oMyExclusions.Rows.Add(newRow) - Dim newRow1 As DataRow = oMyExclusions.NewRow() - newRow1("FILE_CONTAIN") = "\~$" - oMyExclusions.Rows.Add(newRow1) - Dim newRow2 As DataRow = oMyExclusions.NewRow() - newRow2("FILE_CONTAIN") = ".db" - oMyExclusions.Rows.Add(newRow2) - Dim newRow3 As DataRow = oMyExclusions.NewRow() - newRow3("FILE_CONTAIN") = "desktop.ini" - oMyExclusions.Rows.Add(newRow3) - oMyExclusions.AcceptChanges() - Return oMyExclusions - Catch ex As Exception - MsgBox("Error in CreateExclusionTable" & vbNewLine & ex.Message, MsgBoxStyle.Critical) - Return Nothing - End Try - End Function - Private Function GetTablefromXML() As DataTable - Try - Dim DS As New DataSet - DS.ReadXml(PATH_FileExclusions) - Return DS.Tables(0) - Catch ex As Exception - MsgBox("Error in GetTablefromXML" & vbNewLine & ex.Message, MsgBoxStyle.Critical) - Return Nothing - End Try - - End Function + Public Property PATH_FileExclusions As String = Path.Combine(Application.UserAppDataPath(), "FileExclusions.xml") End Class End Namespace diff --git a/GUIs.ZooFlow/Globix/frmGlobix_Index.vb b/GUIs.ZooFlow/Globix/frmGlobix_Index.vb index acab15d2..ea93169e 100644 --- a/GUIs.ZooFlow/Globix/frmGlobix_Index.vb +++ b/GUIs.ZooFlow/Globix/frmGlobix_Index.vb @@ -10,6 +10,7 @@ Imports DigitalData.Modules.Logging Imports DigitalData.Modules.Language.Utils Imports DigitalData.Controls.LookupGrid Imports Independentsoft +Imports DevExpress.XtraEditors.Controls Public Class frmGlobix_Index #Region "+++++ Variablen ++++++" @@ -68,6 +69,8 @@ Public Class frmGlobix_Index clsPostProcessing = New GlobixPostprocessing(LogConfig) _idbdata = New ClassIDBData(LogConfig) _Patterns = New GlobixPatterns(LogConfig) + + Localizer.Active = New LookupGridLocalizer() End Sub Private Sub frmGlobix_Index_Load(sender As Object, e As EventArgs) Handles MyBase.Load @@ -388,14 +391,20 @@ Public Class frmGlobix_Index End Sub Private Sub LoadIndexe_Man() Try + Dim oScreen As New DigitalData.Modules.Windows.Screen() + Dim oDpiScale = oScreen.GetScreenScaling(Me) + Dim oControlCount As Integer = 1 - Dim oLabelPosition As Integer = 11 - Dim oControlPosition As Integer = 33 + Dim oLabelPosition As Integer = 11 * oDpiScale + Dim oControlPosition As Integer = 33 * oDpiScale ' Dim oControls As New GlobixControls(_LogConfig, pnlIndex, Me) Dim oControls As New DigitalData.GUIs.GlobalIndexer.ControlCreator(_LogConfig, pnlIndex, Me) With { .OnControlChanged = AddressOf PrepareDependingControl, .OnLookupData = AddressOf GetLookupData } + + _Logger.Info("Loading Indicies for Screen Scaling Factor [{0}]", oDpiScale) + _Controls = oControls If DT_INDEXEMAN.Rows.Count = 0 Then ShowError("Keine Manuellen Indizes für die " & vbNewLine & "Dokumentart " & ComboBoxEdit1.Text & " definiert") @@ -474,8 +483,8 @@ Public Class frmGlobix_Index End Select oControlCount += 1 - oLabelPosition += 50 - oControlPosition += 50 + oLabelPosition += 50 * oDpiScale + oControlPosition += 50 * oDpiScale 'make y as height in fom Next Dim oPanelHeight = oControlPosition - 30 @@ -501,7 +510,7 @@ Public Class frmGlobix_Index Try Dim oMeta = DirectCast(pControl.Tag, ControlMeta) Dim oIndexName As String = oMeta.IndexName - Dim oSQL = $"SELECT * FROM TBDD_INDEX_MAN WHERE SQL_RESULT LIKE '%{oIndexName}%'" + Dim oSQL = $"SELECT * FROM TBDD_INDEX_MAN WHERE SQL_RESULT LIKE '%{oIndexName}%' AND DOK_ID = {My.Application.Globix.CURRENT_DOCTYPE_ID}" Dim oDatatable As DataTable = My.Database.GetDatatable(oSQL) If Not IsNothing(oDatatable) Then @@ -882,6 +891,17 @@ Public Class frmGlobix_Index _Logger.Info("Datei '" & My.Application.Globix.CURRENT_NEWFILENAME & "' erfolgreich erzeugt.") Dim oDEL As String = "DELETE FROM TBGI_FILES_USER WHERE GUID = " & My.Application.Globix.CURRENT_WORKFILE_GUID My.Database.ExecuteNonQuery(oDEL) + + If My.Application.Globix.CURR_DELETE_ORIGIN = True Then + _Logger.Info("Datei [" & My.Application.Globix.CURRENT_WORKFILE & "] wird gelöscht.") + Try + System.IO.File.Delete(My.Application.Globix.CURRENT_WORKFILE) + Catch ex As Exception + _Logger.Error(ex) + End Try + _Logger.Info("Datei [" & My.Application.Globix.CURRENT_WORKFILE & "] wurde gelöscht.") + End If + Return True End If @@ -1246,12 +1266,15 @@ Public Class frmGlobix_Index If Directory.Exists(opath) = False Then Directory.CreateDirectory(opath) End If - 'Die Datei wird nun verschoben - If My.Application.Globix.CURR_DELETE_ORIGIN = True Then - My.Computer.FileSystem.MoveFile(My.Application.Globix.CURRENT_WORKFILE, My.Application.Globix.CURRENT_NEWFILENAME) - Else - My.Computer.FileSystem.CopyFile(My.Application.Globix.CURRENT_WORKFILE, My.Application.Globix.CURRENT_NEWFILENAME) - End If + ''Die Datei wird nun verschoben + 'If My.Application.Globix.CURR_DELETE_ORIGIN = True Then + ' My.Computer.FileSystem.MoveFile(My.Application.Globix.CURRENT_WORKFILE, My.Application.Globix.CURRENT_NEWFILENAME) + 'Else + ' My.Computer.FileSystem.CopyFile(My.Application.Globix.CURRENT_WORKFILE, My.Application.Globix.CURRENT_NEWFILENAME) + 'End If + + 'Die Datei wird nun an den neuen Ort kopiert + My.Computer.FileSystem.MoveFile(My.Application.Globix.CURRENT_WORKFILE, My.Application.Globix.CURRENT_NEWFILENAME) Dim Insert_String As String Try diff --git a/GUIs.ZooFlow/ZooFlow.vbproj b/GUIs.ZooFlow/ZooFlow.vbproj index d07a6e5c..dfa1507a 100644 --- a/GUIs.ZooFlow/ZooFlow.vbproj +++ b/GUIs.ZooFlow/ZooFlow.vbproj @@ -16,6 +16,21 @@ Binary Off On + publish\ + true + Disk + false + Foreground + 7 + Days + false + false + true + 0 + 1.0.0.%2a + false + false + true AnyCPU @@ -176,6 +191,8 @@ Form + + frmGlobixAdministration.vb @@ -821,6 +838,18 @@ + + + False + Microsoft .NET Framework 4.6.1 %28x86 und x64%29 + true + + + False + .NET Framework 3.5 SP1 + false + +