Compare commits

...

6 Commits

Author SHA1 Message Date
Jonathan Jenne
56645fc3e8 Merge branch 'master' of http://dd-vmp07-com04:3000/SchreiberM/GlobalIndexer 2020-04-30 15:33:06 +02:00
Jonathan Jenne
3b81ecf6c8 Version 2.0.0.29 2020-04-30 15:31:58 +02:00
Jonathan Jenne
70694273f2 add distinct to regex doctype query, make on top button enabled by default 2020-04-30 15:31:19 +02:00
Jonathan Jenne
e5d3d37005 dont close viewer on missing input, show lookup control when multiselect is true 2020-04-30 14:43:13 +02:00
Jonathan Jenne
d8bb4e3caa allow backslash in dynamic folderpaths 2020-04-30 14:24:51 +02:00
Jonathan Jenne
491d76c842 allow dots in patterns 2020-04-30 14:23:16 +02:00
7 changed files with 90 additions and 74 deletions

View File

@@ -96,7 +96,7 @@ Public Class ClassControls
oConnectionString = ClassFormFunctions.GetConnectionString(conid)
If oConnectionString IsNot Nothing Then
If oConnectionString IsNot Nothing And oSql.Length > 0 Then
LOGGER.Debug("Connection String (redacted): [{0}]", oConnectionString.Substring(0, 30))
If ClassPatterns.HasComplexPatterns(oSql) Then

View File

@@ -39,7 +39,7 @@ Public Class ClassPatterns
Public Const MAX_TRY_COUNT = 500
Private Shared regex As Regex = New Regex("{#(\w+)#([\w\d\s_-]+)}+")
Private Shared regex As Regex = New Regex("{#(\w+)#([\.\w\d\s_-]+)}+")
Private Shared allPatterns As New List(Of String) From {PATTERN_WMI, PATTERN_CTRL, PATTERN_IDBA, PATTERN_USER, PATTERN_INT}
Private Shared complexPatterns As New List(Of String) From {PATTERN_WMI, PATTERN_CTRL, PATTERN_IDBA}
Private Shared simplePatterns As New List(Of String) From {PATTERN_USER, PATTERN_INT}

View File

@@ -160,11 +160,13 @@
<Reference Include="DigitalData.Modules.Config">
<HintPath>..\..\DDMonorepo\Modules.Config\bin\Debug\DigitalData.Modules.Config.dll</HintPath>
</Reference>
<Reference Include="DigitalData.Modules.Filesystem">
<HintPath>..\..\DDMonorepo\Modules.Config\bin\Debug\DigitalData.Modules.Filesystem.dll</HintPath>
<Reference Include="DigitalData.Modules.Filesystem, Version=1.0.1.1, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\..\DDMonorepo\Modules.Filesystem\bin\Debug\DigitalData.Modules.Filesystem.dll</HintPath>
<SpecificVersion>False</SpecificVersion>
</Reference>
<Reference Include="DigitalData.Modules.Logging">
<HintPath>..\..\DDMonorepo\Modules.Config\bin\Debug\DigitalData.Modules.Logging.dll</HintPath>
<Reference Include="DigitalData.Modules.Logging, Version=2.0.0.1, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\DDMonorepo\Modules.Logging\bin\Debug\DigitalData.Modules.Logging.dll</HintPath>
</Reference>
<Reference Include="DigitalData.Modules.Windream">
<HintPath>..\..\DDMonorepo\Modules.Windream\bin\Debug\DigitalData.Modules.Windream.dll</HintPath>

View File

@@ -33,7 +33,7 @@ Imports System.Runtime.InteropServices
' übernehmen, indem Sie "*" eingeben:
' <Assembly: AssemblyVersion("1.0.*")>
<Assembly: AssemblyVersion("2.0.0.27")>
<Assembly: AssemblyVersion("2.0.0.28")>
<Assembly: AssemblyFileVersion("1.0.0.0")>
<Assembly: NeutralResourcesLanguageAttribute("")>

View File

@@ -164,7 +164,9 @@ Partial Class frmIndex
'
'BarCheckItem1
'
Me.BarCheckItem1.BindableChecked = True
resources.ApplyResources(Me.BarCheckItem1, "BarCheckItem1")
Me.BarCheckItem1.Checked = True
Me.BarCheckItem1.Id = 5
Me.BarCheckItem1.ImageOptions.SvgImage = CType(resources.GetObject("BarCheckItem1.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage)
Me.BarCheckItem1.Name = "BarCheckItem1"

View File

@@ -639,7 +639,7 @@
<value>DocumentViewer1</value>
</data>
<data name="&gt;&gt;DocumentViewer1.Type" xml:space="preserve">
<value>DigitalData.Controls.DocumentViewer.DocumentViewer, DigitalData.Controls.DocumentViewer, Version=1.0.0.1, Culture=neutral, PublicKeyToken=null</value>
<value>DigitalData.Controls.DocumentViewer.DocumentViewer, DigitalData.Controls.DocumentViewer, Version=1.0.3.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;DocumentViewer1.Parent" xml:space="preserve">
<value>SplitContainer1.Panel2</value>

View File

@@ -435,6 +435,7 @@ Public Class frmIndex
Try
LOGGER.Debug("#### Name_Generieren ####")
Dim sql As String = "select VERSION_DELIMITER, FILE_DELIMITER FROM TBDD_MODULES WHERE GUID = 1"
Dim oFilesystem As New DigitalData.Modules.Filesystem.File(LOGCONFIG)
Dim DT1 As DataTable = ClassDatabase.Return_Datatable(sql)
For Each row As DataRow In DT1.Rows
FILE_DELIMITER = row.Item("FILE_DELIMITER")
@@ -606,8 +607,8 @@ Public Class frmIndex
End Select
Next
CURRENT_NEWFILENAME = ClassFilehandle.CleanFilename(NewFileString, "")
CURRENT_NEWFILENAME = oFilesystem.GetCleanFilename(NewFileString)
'CURRENT_NEWFILENAME = ClassFilehandle.CleanFilename(NewFileString, "")
CURRENT_NEWFILENAME = oRAWZielordner & "\" & CURRENT_NEWFILENAME
If CURRENT_NEWFILENAME.EndsWith("_") Then
@@ -1456,7 +1457,7 @@ Public Class frmIndex
Load_String()
DTTBGI_REGEX_DOCTYPE = ClassDatabase.Return_Datatable("SELECT T1.DOCTYPE as DocType, T.* FROM TBGI_REGEX_DOCTYPE T, VWGI_DOCTYPE T1 WHERE T.DOCTYPE_ID = T1.DOCTYPE_ID")
DTTBGI_REGEX_DOCTYPE = ClassDatabase.Return_Datatable("SELECT DISTINCT T1.DOCTYPE as DocType, T.* FROM TBGI_REGEX_DOCTYPE T, VWGI_DOCTYPE T1 WHERE T.DOCTYPE_ID = T1.DOCTYPE_ID")
MULTIFILES = ClassDatabase.Execute_Scalar("SELECT COUNT(*) FROM TBGI_FILES_USER WHERE WORKED = 0 AND GUID <> " & CURRENT_WORKFILE_GUID & " AND UPPER(USER@WORK) = UPPER('" & Environment.UserName & "')", MyConnectionString, True)
MULTIINDEXING_ACTIVE = False
If MULTIFILES > 0 Then
@@ -1508,24 +1509,27 @@ Public Class frmIndex
FormLoaded = True
If CONFIG.Config.ProfilePreselection Then
checkItemPreselection.Checked = True
If CURRENT_LASTDOKART <> "" Then
cmbDokumentart.SelectedIndex = cmbDokumentart.FindStringExact(CURRENT_LASTDOKART)
End If
End If
Try
If DTTBGI_REGEX_DOCTYPE.Rows.Count > 0 Then
For Each oRoW As DataRow In DTTBGI_REGEX_DOCTYPE.Rows
Dim oOnlyFilename = Path.GetFileName(CURRENT_WORKFILE)
If Regex.IsMatch(oOnlyFilename, oRoW.Item("Regex")) Then
LOGGER.Info($"There is a match on REGEX_DOCTYPE: {oRoW.Item("DOCTYPE")}")
cmbDokumentart.SelectedIndex = cmbDokumentart.FindStringExact(oRoW.Item("DOCTYPE"))
Exit For
End If
Next
' Letzte Auswahl merken überschreibt die automatische selektion
If CONFIG.Config.ProfilePreselection Then
checkItemPreselection.Checked = True
If CURRENT_LASTDOKART <> "" Then
cmbDokumentart.SelectedIndex = cmbDokumentart.FindStringExact(CURRENT_LASTDOKART)
End If
Else
If DTTBGI_REGEX_DOCTYPE.Rows.Count > 0 Then
For Each oRoW As DataRow In DTTBGI_REGEX_DOCTYPE.Rows
Dim oOnlyFilename = Path.GetFileName(CURRENT_WORKFILE)
If Regex.IsMatch(oOnlyFilename, oRoW.Item("Regex")) Then
LOGGER.Info($"There is a match on REGEX_DOCTYPE: {oRoW.Item("DOCTYPE")}")
cmbDokumentart.SelectedIndex = cmbDokumentart.FindStringExact(oRoW.Item("DOCTYPE"))
Exit For
End If
Next
End If
End If
Catch ex As Exception
LOGGER.Info(" - Unexpected error DTTBGI_REGEX_DOCTYPE - ErrorMessage: " & vbNewLine & ex.Message)
@@ -1626,6 +1630,7 @@ Public Class frmIndex
Dim AddNewItems As Boolean = oRow.Item("VKT_ADD_ITEM")
Dim PreventDuplicates As Boolean = oRow.Item("VKT_PREVENT_MULTIPLE_VALUES")
Dim oControlName As String = oRow.Item("NAME")
Dim oConnectionId = NotNull(oRow.Item("CONNECTION_ID"), 0)
If oDataType <> "BOOLEAN" Then
addLabel(oControlName, oRow.Item("COMMENT").ToString, oLabelPosition, oControlCount)
@@ -1642,8 +1647,8 @@ Public Class frmIndex
pnlIndex.Controls.Add(chk)
End If
Case "INTEGER"
If oRow.Item("SUGGESTION") = True And oRow.Item("SQL_RESULT").ToString.Length > 0 Then
Dim oControl = oControls.AddVorschlag_ComboBox(oControlName, oControlPosition, oRow.Item("CONNECTION_ID"), oRow.Item("SQL_RESULT"), MultiSelect, oDataType, DefaultValue, AddNewItems, PreventDuplicates)
If (oRow.Item("SUGGESTION") = True And oRow.Item("SQL_RESULT").ToString.Length > 0) Or MultiSelect = True Then
Dim oControl = oControls.AddVorschlag_ComboBox(oControlName, oControlPosition, oConnectionId, oRow.Item("SQL_RESULT"), MultiSelect, oDataType, DefaultValue, AddNewItems, PreventDuplicates)
If Not IsNothing(oControl) Then
pnlIndex.Controls.Add(oControl)
End If
@@ -1655,8 +1660,8 @@ Public Class frmIndex
End If
End If
Case "VARCHAR"
If oRow.Item("SUGGESTION") = True And oRow.Item("SQL_RESULT").ToString.Length > 0 Then
Dim oControl = oControls.AddVorschlag_ComboBox(oControlName, oControlPosition, oRow.Item("CONNECTION_ID"), oRow.Item("SQL_RESULT"), MultiSelect, oDataType, DefaultValue, AddNewItems, PreventDuplicates)
If (oRow.Item("SUGGESTION") = True And oRow.Item("SQL_RESULT").ToString.Length > 0) Or MultiSelect = True Then
Dim oControl = oControls.AddVorschlag_ComboBox(oControlName, oControlPosition, oConnectionId, oRow.Item("SQL_RESULT"), MultiSelect, oDataType, DefaultValue, AddNewItems, PreventDuplicates)
If Not IsNothing(oControl) Then
pnlIndex.Controls.Add(oControl)
End If
@@ -2335,40 +2340,43 @@ Public Class frmIndex
End Try
End Function
Private Function CreateFolderForIndex(myDynamicFolder As String)
Private Function CreateFolderForIndex(DynamicFolderConfig As String)
Try
Dim ORootFolder As String = Path.GetDirectoryName(CURRENT_NEWFILENAME)
Dim oRootFolder As String = Path.GetDirectoryName(CURRENT_NEWFILENAME)
Dim oFilesystem As New DigitalData.Modules.Filesystem.File(LOGCONFIG)
'######
Dim p_reg As String = "\[%{1}[a-zA-Z0-9\!\$\&\/\(\)\=\?\,\.\-\;\:_öÖüÜäÄ\#\'\+\*\~\{\}\@\€\<\>\ ]+]{1}"
Dim oRegexString As String = "\[%{1}[a-zA-Z0-9\!\$\&\/\(\)\=\?\,\.\-\;\:_öÖüÜäÄ\#\'\+\*\~\{\}\@\€\<\>\ ]+]{1}"
' einen Regulären Ausdruck laden
Dim regularExpression As Regex = New Regex(p_reg)
Dim oRegex As Regex = New Regex(oRegexString)
' die Vorkommen im Folder-String auslesen
Dim elemente As MatchCollection = regularExpression.Matches(myDynamicFolder)
Dim oMatches As MatchCollection = oRegex.Matches(DynamicFolderConfig)
'####
' alle Vorkommen innerhalb des Ordnerstrings durchlaufen
For Each element As Match In elemente
LOGGER.Info("Elementname in FolderString: '" & element.ToString & "'")
Select Case element.Value.Substring(2, 1).ToUpper
For Each oMatch As Match In oMatches
LOGGER.Info("Elementname in FolderString: '" & oMatch.ToString & "'")
Select Case oMatch.Value.Substring(2, 1).ToUpper
'Manueller Indexwert
Case "M"
Dim ManIndexname = element.Value.Substring(3, element.Value.Length - 4)
Dim optional_index As Boolean = ClassDatabase.Execute_Scalar("SELECT OPTIONAL FROM TBDD_INDEX_MAN WHERE DOK_ID = " & CURRENT_DOKART_ID & " AND UPPER(NAME) = UPPER('" & ManIndexname & "')", MyConnectionString, True)
LOGGER.Info("Versuch den Indexwert aus '" & ManIndexname & "' auszulesen.")
Dim ManIndex_Value As String = GetManIndex_Value(ManIndexname, "FILE", optional_index)
LOGGER.Info("Ergebnis/Wert für neuen Ordner: '" & ManIndexname & "'")
If Not ManIndex_Value = String.Empty Then
If IsDate(ManIndex_Value) Then
ManIndex_Value = CDate(ManIndex_Value).ToString("yyyyMMdd")
Dim oManIndexName = oMatch.Value.Substring(3, oMatch.Value.Length - 4)
Dim oIsOptional As Boolean = ClassDatabase.Execute_Scalar("SELECT OPTIONAL FROM TBDD_INDEX_MAN WHERE DOK_ID = " & CURRENT_DOKART_ID & " AND UPPER(NAME) = UPPER('" & oManIndexName & "')", MyConnectionString, True)
LOGGER.Info("Versuch den Indexwert aus '" & oManIndexName & "' auszulesen.")
Dim oManIndexValue As String = GetManIndex_Value(oManIndexName, "FILE", oIsOptional)
LOGGER.Info("Ergebnis/Wert für neuen Ordner: '" & oManIndexName & "'")
If Not oManIndexValue = String.Empty Then
If IsDate(oManIndexValue) Then
oManIndexValue = CDate(oManIndexValue).ToString("yyyyMMdd")
End If
ManIndex_Value = ClassFilehandle.CleanFilename(ManIndex_Value, "")
myDynamicFolder = myDynamicFolder.Replace(element.ToString, ManIndex_Value)
LOGGER.Info("FolderPattern: '" & myDynamicFolder & "'")
oManIndexValue = oFilesystem.GetCleanPath(oManIndexValue)
'oManIndexValue = ClassFilehandle.CleanFilename(oManIndexValue, "")
DynamicFolderConfig = DynamicFolderConfig.Replace(oMatch.ToString, oManIndexValue)
LOGGER.Info("FolderPattern: '" & DynamicFolderConfig & "'")
Else
If optional_index = True Then
If oIsOptional = True Then
LOGGER.Info("Optionaler Indexwert ist NICHT gefüllt")
Else
LOGGER.Info(" - Achtung Ausnahme in 'CrFolderForIndex': der Index ist leer!")
@@ -2376,17 +2384,19 @@ Public Class frmIndex
End If
End If
Case "A"
Dim AutoIndexname = element.Value.Substring(3, element.Value.Length - 4)
LOGGER.Info("Versuch den Auto-Indexwert aus '" & AutoIndexname & "' auszulesen.")
Dim AutoIndex_Value As String = GetAutoIndex_Value(AutoIndexname)
LOGGER.Info("Ergebnis/Wert für neuen Ordner: '" & AutoIndexname & "'")
If Not AutoIndex_Value = String.Empty Then
AutoIndex_Value = ClassFilehandle.CleanFilename(AutoIndex_Value, "")
If AutoIndex_Value = "EMPTY_OI" Then
myDynamicFolder = myDynamicFolder.Replace(element.ToString, "")
Dim oAutoIndexName = oMatch.Value.Substring(3, oMatch.Value.Length - 4)
LOGGER.Info("Versuch den Auto-Indexwert aus '" & oAutoIndexName & "' auszulesen.")
Dim oAutoIndexValue As String = GetAutoIndex_Value(oAutoIndexName)
LOGGER.Info("Ergebnis/Wert für neuen Ordner: '" & oAutoIndexName & "'")
If Not oAutoIndexValue = String.Empty Then
oAutoIndexValue = oFilesystem.GetCleanPath(oAutoIndexValue)
'oAutoIndexValue = ClassFilehandle.CleanFilename(oAutoIndexValue, "")
If oAutoIndexValue = "EMPTY_OI" Then
DynamicFolderConfig = DynamicFolderConfig.Replace(oMatch.ToString, "")
Else
myDynamicFolder = myDynamicFolder.Replace(element.ToString, AutoIndex_Value)
LOGGER.Info("FolderPattern: '" & myDynamicFolder & "'")
DynamicFolderConfig = DynamicFolderConfig.Replace(oMatch.ToString, oAutoIndexValue)
LOGGER.Info("FolderPattern: '" & DynamicFolderConfig & "'")
End If
Else
@@ -2402,7 +2412,7 @@ Public Class frmIndex
If _day.Length = 1 Then
_day = "0" & _day
End If
Dim type = element.Value.Substring(3, element.Value.Length - 4)
Dim type = oMatch.Value.Substring(3, oMatch.Value.Length - 4)
If type.StartsWith("_") Then
type = type.Replace("_", "")
End If
@@ -2416,26 +2426,23 @@ Public Class frmIndex
Case "YYYY-MM"
oElementTemp = My.Computer.Clock.LocalTime.Year & "-" & _Month
End Select
myDynamicFolder = myDynamicFolder.Replace(element.ToString, oElementTemp)
LOGGER.Info("FolderPatter nach V-Element: '" & myDynamicFolder & "'")
DynamicFolderConfig = DynamicFolderConfig.Replace(oMatch.ToString, oElementTemp)
LOGGER.Info("FolderPatter nach V-Element: '" & DynamicFolderConfig & "'")
Case Else
LOGGER.Info(" - Achtung - in der Namenkonvention wurde ein Element gefunden welches nicht zugeordnet werden kann!" & vbNewLine & "Elementname: " & element.Value.ToUpper)
LOGGER.Info(" - Achtung - in der Namenkonvention wurde ein Element gefunden welches nicht zugeordnet werden kann!" & vbNewLine & "Elementname: " & oMatch.Value.ToUpper)
If USER_LANGUAGE = "de-DE" Then
MsgBox("Achtung - in der Namenkonvention wurde ein Element gefunden welches nicht zugeordnet werden kann!" & vbNewLine & "Elementname: " & element.Value.ToUpper, MsgBoxStyle.Exclamation, "Unexpected error in Name generieren:")
MsgBox("Achtung - in der Namenkonvention wurde ein Element gefunden welches nicht zugeordnet werden kann!" & vbNewLine & "Elementname: " & oMatch.Value.ToUpper, MsgBoxStyle.Exclamation, "Unexpected error in Name generieren:")
Else
MsgBox("Attention - One element in Namingconvention could not be matched!" & vbNewLine & "Elementname: " & element.Value.ToUpper, MsgBoxStyle.Exclamation, "Unexpected error in Name generieren:")
MsgBox("Attention - One element in Namingconvention could not be matched!" & vbNewLine & "Elementname: " & oMatch.Value.ToUpper, MsgBoxStyle.Exclamation, "Unexpected error in Name generieren:")
End If
End Select
Next
LOGGER.Info("Den Root-Folder zusammenfügen>> ")
Dim oNewFullpath As String = ORootFolder & "\" & myDynamicFolder & "\"
oNewFullpath = oNewFullpath.Replace("\\", "\")
oNewFullpath = Path.Combine(ORootFolder, myDynamicFolder)
Dim oNewFullPath As String = System.IO.Path.Combine(oRootFolder, DynamicFolderConfig)
LOGGER.Info("Fullpath (mit evtl. Sonderzeichen (SZ)) '" & oNewFullpath & "'")
Dim invalidPathChars() As Char = Path.GetInvalidPathChars()
@@ -2559,8 +2566,7 @@ Public Class frmIndex
ClearError()
ClearNotice()
DocumentViewer1.CloseDocument()
DocumentViewer1.Done()
Me.Cursor = Cursors.WaitCursor
ClassHelper.Refresh_RegexTable()
@@ -2596,6 +2602,9 @@ Public Class frmIndex
'DTACTUAL_FILES.Clear()
DocumentViewer1.CloseDocument()
DocumentViewer1.Done()
CancelAttempts = 2
Me.Close()
End If
@@ -2612,6 +2621,9 @@ Public Class frmIndex
End If
End If
DocumentViewer1.CloseDocument()
DocumentViewer1.Done()
CancelAttempts = 2
Me.Close()
End If