diff --git a/GUIs.GlobalIndexer/ControlCreator.vb b/GUIs.GlobalIndexer/ControlCreator.vb index bf7556f9..c1d17e82 100644 --- a/GUIs.GlobalIndexer/ControlCreator.vb +++ b/GUIs.GlobalIndexer/ControlCreator.vb @@ -12,7 +12,7 @@ Public Class ControlCreator Private Logger As Logger Private Const DEFAULT_HEIGHT = 27 - Private Const DEFAULT_WIDTH = 100 + Private Const DEFAULT_WIDTH = 450 Private Const DEFAULT_POSITION_X = 11 Private Const TYPE_BOOLEAN = "BOOLEAN" @@ -34,7 +34,11 @@ Public Class ControlCreator ''' ''' The Datatable which contains the Control's Data Public Property OnLookupData As Func(Of Control, String, Integer, DataTable) - + Public Class ControlMeta + Public Property IndexName As String + Public Property IndexType As String + Public Property MultipleValues As Boolean = False + End Class Public Sub New(LogConfig As LogConfig, Panel As Panel, Form As Form) Me.Form = Form Me.Panel = Panel diff --git a/GUIs.ZooFlow/ClassDataASorDB.vb b/GUIs.ZooFlow/ClassDataASorDB.vb index 15265687..5b0d2267 100644 --- a/GUIs.ZooFlow/ClassDataASorDB.vb +++ b/GUIs.ZooFlow/ClassDataASorDB.vb @@ -79,8 +79,7 @@ Public Class ClassDataASorDB End Function Public Sub Refresh_Connections() Try - Dim oSql = String.Format("SELECT * FROM TBDD_CONNECTION") - Dim oResult As DataTable + Dim oSql = String.Format("SELECT * FROM TBDD_CONNECTION WHERE AKTIV = 1") DT_CONNECTIONS = GetDatatable("DD_ECM", oSql, "TBDD_CONNECTION", "", "", "") Catch ex As Exception _Logger.Error(ex) diff --git a/GUIs.ZooFlow/ClassInit.vb b/GUIs.ZooFlow/ClassInit.vb index 1fa78487..ac5584c3 100644 --- a/GUIs.ZooFlow/ClassInit.vb +++ b/GUIs.ZooFlow/ClassInit.vb @@ -156,6 +156,8 @@ Public Class ClassInit End Select Next + oSql = "SELECT * FROM TBDD_CONNECTION" + Catch ex As Exception _Logger.Error(ex) Throw New InitException("Error in InitBasicData", ex) diff --git a/GUIs.ZooFlow/Globix/ClassEmailHeaderExtractor.vb b/GUIs.ZooFlow/Globix/ClassEmailHeaderExtractor.vb index 56aac017..40199418 100644 --- a/GUIs.ZooFlow/Globix/ClassEmailHeaderExtractor.vb +++ b/GUIs.ZooFlow/Globix/ClassEmailHeaderExtractor.vb @@ -56,7 +56,7 @@ Public Class ClassEmailHeaderExtractor End Function Public Shared Function extractFromHeader(messageHeaders As String, Regex As String) As String Try - Dim result As String + Dim result As String = "" Dim i As Integer = 0 If IsNothing(messageHeaders) Then Return Nothing diff --git a/GUIs.ZooFlow/Globix/ClassFolderwatcher.vb b/GUIs.ZooFlow/Globix/ClassFolderwatcher.vb index 0264f80e..99404fe7 100644 --- a/GUIs.ZooFlow/Globix/ClassFolderwatcher.vb +++ b/GUIs.ZooFlow/Globix/ClassFolderwatcher.vb @@ -12,7 +12,7 @@ Public Class ClassFolderwatcher clsFilehandle = New ClassFilehandle() End Sub - Public Function Restart_FolderWatch() + Public Function Restart_FolderWatch() As Boolean Try If FWFolderWatcher.EnableRaisingEvents = True Then 'Gestartet also Stoppen @@ -29,9 +29,11 @@ Public Class ClassFolderwatcher My.UIConfig.Globix.FolderWatchStarted = True My.UIConfigManager.Save() End If + Return True Catch ex As Exception Logger.Info($"Error in Restart_FolderWatch: {ex.Message}") Logger.Error(ex.Message) + Return False End Try End Function Public Sub Restart_FolderWatchSCAN() diff --git a/GUIs.ZooFlow/Globix/GlobixControls.vb b/GUIs.ZooFlow/Globix/GlobixControls.vb index 9029b611..3f29c54d 100644 --- a/GUIs.ZooFlow/Globix/GlobixControls.vb +++ b/GUIs.ZooFlow/Globix/GlobixControls.vb @@ -416,7 +416,7 @@ Public Class GlobixControls Continue For End If - oControlSql = Patterns.ReplaceUserValues(oControlSql, My.Application.User.GivenName, My.Application.User.Surname, My.Application.User.ShortName, My.Application.User.Language, My.Application.User.Email, My.Application.User.UserId, My.Application.Globix.CURRENT_DOCTYPE_ID) + oControlSql = Patterns.ReplaceUserValues(oControlSql, My.Application.Globix.CURRENT_DOCTYPE_ID) oControlSql = Patterns.ReplaceInternalValues(oControlSql) oControlSql = Patterns.ReplaceControlValues(oControlSql, Panel) diff --git a/GUIs.ZooFlow/Globix/GlobixPatterns.vb b/GUIs.ZooFlow/Globix/GlobixPatterns.vb index 96719f69..d471193e 100644 --- a/GUIs.ZooFlow/Globix/GlobixPatterns.vb +++ b/GUIs.ZooFlow/Globix/GlobixPatterns.vb @@ -55,7 +55,7 @@ Public Class GlobixPatterns result = ReplaceInternalValues(result) result = ReplaceControlValues(result, panel) result = ReplaceIDBAttributes(My.Application.Globix.CURRENT_IDB_OBJ_ID, result, pissql) - result = ReplaceUserValues(result, prename, surname, shortname, language, email, userId, profileId) + result = ReplaceUserValues(result, profileId) _Logger.Debug($"inputString AFTER replacing: [{result}]") Return result Catch ex As Exception @@ -95,34 +95,33 @@ Public Class GlobixPatterns End Try End Function - Public Function ReplaceUserValues(input As String, prename As Object, surname As Object, shortname As Object, language As String, email As Object, userId As Object, profileId As Object) As String + Public Function ReplaceUserValues(input As String, profileId As Object) As String Try Dim result = input - While ContainsPatternAndValue(result, PATTERN_USER, USER_VALUE_PRENAME) - result = ReplacePattern(result, PATTERN_USER, prename) + result = ReplacePattern(result, PATTERN_USER, My.Application.User.GivenName) End While While ContainsPatternAndValue(result, PATTERN_USER, USER_VALUE_USER_ID) - result = ReplacePattern(result, PATTERN_USER, userId) + result = ReplacePattern(result, PATTERN_USER, My.Application.User.UserId) End While While ContainsPatternAndValue(result, PATTERN_USER, USER_VALUE_SURNAME) - result = ReplacePattern(result, PATTERN_USER, surname) + result = ReplacePattern(result, PATTERN_USER, My.Application.User.Surname) End While - If IsDBNull(shortname) Then - shortname = "" + If IsDBNull(My.Application.User.ShortName) Then + My.Application.User.ShortName = "" End If While ContainsPatternAndValue(result, PATTERN_USER, USER_VALUE_SHORTNAME) - result = ReplacePattern(result, PATTERN_USER, shortname) + result = ReplacePattern(result, PATTERN_USER, My.Application.User.ShortName) End While While ContainsPatternAndValue(result, PATTERN_USER, USER_VALUE_LANGUAGE) - result = ReplacePattern(result, PATTERN_USER, language) + result = ReplacePattern(result, PATTERN_USER, My.Application.User.Language) End While While ContainsPatternAndValue(result, PATTERN_USER, USER_VALUE_EMAIL) - result = ReplacePattern(result, PATTERN_USER, email) + result = ReplacePattern(result, PATTERN_USER, My.Application.User.Email) End While While ContainsPatternAndValue(result, PATTERN_USER, USER_VALUE_PROFILE_ID) diff --git a/GUIs.ZooFlow/Globix/frmGlobix_Index.Designer.vb b/GUIs.ZooFlow/Globix/frmGlobix_Index.Designer.vb index d4a8576d..a703983c 100644 --- a/GUIs.ZooFlow/Globix/frmGlobix_Index.Designer.vb +++ b/GUIs.ZooFlow/Globix/frmGlobix_Index.Designer.vb @@ -23,6 +23,11 @@ Partial Class frmGlobix_Index _ Private Sub InitializeComponent() Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmGlobix_Index)) + Dim EditorButtonImageOptions1 As DevExpress.XtraEditors.Controls.EditorButtonImageOptions = New DevExpress.XtraEditors.Controls.EditorButtonImageOptions() + Dim SerializableAppearanceObject1 As DevExpress.Utils.SerializableAppearanceObject = New DevExpress.Utils.SerializableAppearanceObject() + Dim SerializableAppearanceObject2 As DevExpress.Utils.SerializableAppearanceObject = New DevExpress.Utils.SerializableAppearanceObject() + Dim SerializableAppearanceObject3 As DevExpress.Utils.SerializableAppearanceObject = New DevExpress.Utils.SerializableAppearanceObject() + Dim SerializableAppearanceObject4 As DevExpress.Utils.SerializableAppearanceObject = New DevExpress.Utils.SerializableAppearanceObject() Me.RibbonControl1 = New DevExpress.XtraBars.Ribbon.RibbonControl() Me.BarButtonItem2 = New DevExpress.XtraBars.BarButtonItem() Me.BarButtonItem3 = New DevExpress.XtraBars.BarButtonItem() @@ -47,16 +52,16 @@ Partial Class frmGlobix_Index Me.BarCheckItem2 = New DevExpress.XtraBars.BarCheckItem() Me.SplitContainerControl1 = New DevExpress.XtraEditors.SplitContainerControl() Me.pnlIndex = New System.Windows.Forms.Panel() + Me.ComboBoxEdit1 = New DevExpress.XtraEditors.ComboBoxEdit() Me.Panel3 = New System.Windows.Forms.Panel() Me.PictureEdit1 = New DevExpress.XtraEditors.PictureEdit() Me.Panel1 = New System.Windows.Forms.Panel() - Me.Label1 = New System.Windows.Forms.Label() - Me.cmbDoctype = New System.Windows.Forms.ComboBox() Me.DocumentViewer1 = New DigitalData.Controls.DocumentViewer.DocumentViewer() Me.GlobixDataset = New DigitalData.GUIs.ZooFlow.GlobixDataset() CType(Me.RibbonControl1, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.SplitContainerControl1, System.ComponentModel.ISupportInitialize).BeginInit() Me.SplitContainerControl1.SuspendLayout() + CType(Me.ComboBoxEdit1.Properties, System.ComponentModel.ISupportInitialize).BeginInit() Me.Panel3.SuspendLayout() CType(Me.PictureEdit1.Properties, System.ComponentModel.ISupportInitialize).BeginInit() Me.Panel1.SuspendLayout() @@ -254,15 +259,30 @@ Partial Class frmGlobix_Index ' 'pnlIndex ' - Me.pnlIndex.BackColor = System.Drawing.Color.DimGray + Me.pnlIndex.BackColor = System.Drawing.Color.Silver Me.pnlIndex.Dock = System.Windows.Forms.DockStyle.Fill Me.pnlIndex.Font = New System.Drawing.Font("Segoe UI", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.pnlIndex.ForeColor = System.Drawing.Color.White - Me.pnlIndex.Location = New System.Drawing.Point(0, 58) + Me.pnlIndex.Location = New System.Drawing.Point(0, 33) Me.pnlIndex.Name = "pnlIndex" - Me.pnlIndex.Size = New System.Drawing.Size(591, 375) + Me.pnlIndex.Size = New System.Drawing.Size(591, 400) Me.pnlIndex.TabIndex = 3 ' + 'ComboBoxEdit1 + ' + Me.ComboBoxEdit1.Dock = System.Windows.Forms.DockStyle.Top + Me.ComboBoxEdit1.Location = New System.Drawing.Point(0, 0) + Me.ComboBoxEdit1.MenuManager = Me.RibbonControl1 + Me.ComboBoxEdit1.Name = "ComboBoxEdit1" + SerializableAppearanceObject1.BackColor = System.Drawing.Color.FromArgb(CType(CType(255, Byte), Integer), CType(CType(214, Byte), Integer), CType(CType(49, Byte), Integer)) + SerializableAppearanceObject1.Options.UseBackColor = True + Me.ComboBoxEdit1.Properties.Buttons.AddRange(New DevExpress.XtraEditors.Controls.EditorButton() {New DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo, "", 20, True, True, False, EditorButtonImageOptions1, New DevExpress.Utils.KeyShortcut(System.Windows.Forms.Keys.None), SerializableAppearanceObject1, SerializableAppearanceObject2, SerializableAppearanceObject3, SerializableAppearanceObject4, "", Nothing, Nothing, DevExpress.Utils.ToolTipAnchor.[Default])}) + Me.ComboBoxEdit1.Properties.ButtonsStyle = DevExpress.XtraEditors.Controls.BorderStyles.UltraFlat + Me.ComboBoxEdit1.Properties.NullText = "Bitte wählen Sie ein Profil" + Me.ComboBoxEdit1.Properties.Padding = New System.Windows.Forms.Padding(5) + Me.ComboBoxEdit1.Size = New System.Drawing.Size(591, 30) + Me.ComboBoxEdit1.TabIndex = 4 + ' 'Panel3 ' Me.Panel3.Controls.Add(Me.PictureEdit1) @@ -279,7 +299,7 @@ Partial Class frmGlobix_Index Me.PictureEdit1.Location = New System.Drawing.Point(0, 0) Me.PictureEdit1.MenuManager = Me.RibbonControl1 Me.PictureEdit1.Name = "PictureEdit1" - Me.PictureEdit1.Properties.Appearance.BackColor = System.Drawing.Color.DimGray + Me.PictureEdit1.Properties.Appearance.BackColor = System.Drawing.Color.Silver Me.PictureEdit1.Properties.Appearance.Options.UseBackColor = True Me.PictureEdit1.Properties.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.Flat Me.PictureEdit1.Properties.ShowCameraMenuItem = DevExpress.XtraEditors.Controls.CameraMenuItemVisibility.[Auto] @@ -289,38 +309,14 @@ Partial Class frmGlobix_Index ' 'Panel1 ' - Me.Panel1.BackColor = System.Drawing.Color.DimGray - Me.Panel1.Controls.Add(Me.Label1) - Me.Panel1.Controls.Add(Me.cmbDoctype) + Me.Panel1.BackColor = System.Drawing.Color.Silver + Me.Panel1.Controls.Add(Me.ComboBoxEdit1) Me.Panel1.Dock = System.Windows.Forms.DockStyle.Top Me.Panel1.Location = New System.Drawing.Point(0, 0) Me.Panel1.Name = "Panel1" - Me.Panel1.Size = New System.Drawing.Size(591, 58) + Me.Panel1.Size = New System.Drawing.Size(591, 33) Me.Panel1.TabIndex = 0 ' - 'Label1 - ' - Me.Label1.AutoSize = True - Me.Label1.Font = New System.Drawing.Font("Segoe UI", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.Label1.ForeColor = System.Drawing.Color.White - Me.Label1.ImeMode = System.Windows.Forms.ImeMode.NoControl - Me.Label1.Location = New System.Drawing.Point(3, 3) - Me.Label1.Name = "Label1" - Me.Label1.Size = New System.Drawing.Size(212, 17) - Me.Label1.TabIndex = 2 - Me.Label1.Text = "Bitte wählen Sie einen Ablage-Flow:" - ' - 'cmbDoctype - ' - Me.cmbDoctype.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _ - Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) - Me.cmbDoctype.Font = New System.Drawing.Font("Segoe UI", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.cmbDoctype.FormattingEnabled = True - Me.cmbDoctype.Location = New System.Drawing.Point(6, 27) - Me.cmbDoctype.Name = "cmbDoctype" - Me.cmbDoctype.Size = New System.Drawing.Size(555, 25) - Me.cmbDoctype.TabIndex = 0 - ' 'DocumentViewer1 ' Me.DocumentViewer1.Dock = System.Windows.Forms.DockStyle.Fill @@ -351,10 +347,10 @@ Partial Class frmGlobix_Index CType(Me.RibbonControl1, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.SplitContainerControl1, System.ComponentModel.ISupportInitialize).EndInit() Me.SplitContainerControl1.ResumeLayout(False) + CType(Me.ComboBoxEdit1.Properties, System.ComponentModel.ISupportInitialize).EndInit() Me.Panel3.ResumeLayout(False) CType(Me.PictureEdit1.Properties, System.ComponentModel.ISupportInitialize).EndInit() Me.Panel1.ResumeLayout(False) - Me.Panel1.PerformLayout() CType(Me.GlobixDataset, System.ComponentModel.ISupportInitialize).EndInit() Me.ResumeLayout(False) Me.PerformLayout() @@ -384,12 +380,11 @@ Partial Class frmGlobix_Index Friend WithEvents BarButtonItem1 As DevExpress.XtraBars.BarButtonItem Friend WithEvents SplitContainerControl1 As DevExpress.XtraEditors.SplitContainerControl Friend WithEvents Panel1 As Panel - Friend WithEvents cmbDoctype As ComboBox Friend WithEvents DocumentViewer1 As Controls.DocumentViewer.DocumentViewer - Friend WithEvents Label1 As Label Friend WithEvents BarHeaderItem1 As DevExpress.XtraBars.BarHeaderItem Friend WithEvents pnlIndex As Panel Friend WithEvents Panel3 As Panel Friend WithEvents PictureEdit1 As DevExpress.XtraEditors.PictureEdit Friend WithEvents GlobixDataset As GlobixDataset + Friend WithEvents ComboBoxEdit1 As DevExpress.XtraEditors.ComboBoxEdit End Class diff --git a/GUIs.ZooFlow/Globix/frmGlobix_Index.vb b/GUIs.ZooFlow/Globix/frmGlobix_Index.vb index 08ad926c..2573c00c 100644 --- a/GUIs.ZooFlow/Globix/frmGlobix_Index.vb +++ b/GUIs.ZooFlow/Globix/frmGlobix_Index.vb @@ -5,7 +5,9 @@ Imports System.IO Imports System.Security.AccessControl Imports System.Security.Principal Imports System.Text.RegularExpressions +Imports DigitalData.GUIs.GlobalIndexer Imports DigitalData.Modules.Logging +Imports DigitalData.Controls.LookupGrid Imports Independentsoft Public Class frmGlobix_Index @@ -35,6 +37,21 @@ Public Class frmGlobix_Index Private clsPostProcessing As GlobixPostprocessing Private _DataASorDB As ClassDataASorDB Private _idbdata As ClassIDBData + Private _Patterns As GlobixPatterns + Private _Controls As DigitalData.GUIs.GlobalIndexer.ControlCreator + Public Class DocType + Public Property Guid + Public Property Name + + Public Overrides Function ToString() As String + Return Name + End Function + End Class + Public Class ControlMeta + Public Property IndexName As String + Public Property IndexType As String + Public Property MultipleValues As Boolean = False + End Class #End Region Public Sub New(LogConfig As LogConfig) @@ -49,6 +66,7 @@ Public Class frmGlobix_Index clsPatterns = New GlobixPatterns(LogConfig) clsPostProcessing = New GlobixPostprocessing(LogConfig) _idbdata = New ClassIDBData(LogConfig) + _Patterns = New GlobixPatterns(LogConfig) End Sub Private Sub frmGlobix_Index_Load(sender As Object, e As EventArgs) Handles MyBase.Load @@ -247,7 +265,15 @@ Public Class frmGlobix_Index checkItemPreselection.Checked = True If My.Application.Globix.CURRENT_LASTDOCTYPE <> "" Then - cmbDoctype.SelectedIndex = cmbDoctype.FindStringExact(My.Application.Globix.CURRENT_LASTDOCTYPE) + Dim oFoundDocType = ComboBoxEdit1.Properties.Items. + Cast(Of DocType)(). + Where(Function(dt) dt.Name = My.Application.Globix.CURRENT_LASTDOCTYPE). + FirstOrDefault() + If oFoundDocType IsNot Nothing Then + ComboBoxEdit1.SelectedItem = oFoundDocType + End If + + End If Else If My.Application.Globix.DTTBGI_REGEX_DOCTYPE.Rows.Count > 0 Then @@ -257,7 +283,14 @@ Public Class frmGlobix_Index _Logger.Debug("There is a match on REGEX_DOCTYPE: [{0}]", oRoW.Item("DOCTYPE")) _Logger.Debug("Regex: [{0}], FileName: [{1}]", oRoW.Item("Regex"), oOnlyFilename) - cmbDoctype.SelectedIndex = cmbDoctype.FindStringExact(oRoW.Item("DOCTYPE")) + Dim oFoundDocType = ComboBoxEdit1.Properties.Items. + Cast(Of DocType)(). + Where(Function(dt) dt.Name = My.Application.Globix.CURRENT_LASTDOCTYPE). + FirstOrDefault() + + If oFoundDocType IsNot Nothing Then + ComboBoxEdit1.SelectedItem = oFoundDocType + End If Exit For End If Next @@ -277,44 +310,46 @@ Public Class frmGlobix_Index Dim oSql = String.Format("select * from VWGI_DOCTYPE where UPPER(USERNAME) = UPPER('{0}') ORDER BY SEQUENCE", My.Application.User.UserName) Dim oFilter = $"USERNAME like '%{My.Application.User.UserName}%'" DT_DOKART = _DataASorDB.GetDatatable("DD_ECM", oSql, "VWGI_DOCTYPE", oFilter, "SEQUENCE") - cmbDoctype.DataSource = DT_DOKART - cmbDoctype.ValueMember = DT_DOKART.Columns("DOCTYPE_ID").ColumnName - cmbDoctype.DisplayMember = DT_DOKART.Columns("DOCTYPE").ColumnName - cmbDoctype.AutoCompleteMode = AutoCompleteMode.Suggest - cmbDoctype.AutoCompleteSource = AutoCompleteSource.ListItems - cmbDoctype.SelectedIndex = -1 + 'cmbDoctype.DataSource = DT_DOKART + 'cmbDoctype.ValueMember = DT_DOKART.Columns("DOCTYPE_ID").ColumnName + 'cmbDoctype.DisplayMember = DT_DOKART.Columns("DOCTYPE").ColumnName + 'cmbDoctype.AutoCompleteMode = AutoCompleteMode.Suggest + 'cmbDoctype.AutoCompleteSource = AutoCompleteSource.ListItems + 'cmbDoctype.SelectedIndex = -1 + For Each oRow As DataRow In DT_DOKART.Rows + ComboBoxEdit1.Properties.Items.Add(New DocType With { + .Guid = oRow.Item("DOCTYPE_ID"), + .Name = oRow.Item("DOCTYPE") + }) + Next Catch ex As Exception _Logger.Warn("Unexpected error in Refresh_Dokart: " & vbNewLine & ex.Message) MsgBox(ex.Message, MsgBoxStyle.Critical, "Unexpected error in Laden der Dokumentarten:") End Try End Sub - Private Sub cmbDoctype_SelectedValueChanged(sender As Object, e As EventArgs) Handles cmbDoctype.SelectedValueChanged - End Sub + Private Sub ComboBoxEdit1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBoxEdit1.SelectedIndexChanged + If ComboBoxEdit1.SelectedIndex <> -1 And FormLoaded = True Then + Dim oSelectedItem As DocType = ComboBoxEdit1.SelectedItem - Private Sub cmbDoctype_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbDoctype.SelectedIndexChanged - If cmbDoctype.SelectedIndex <> -1 And FormLoaded = True Then - If cmbDoctype.SelectedValue.GetType.ToString = "System.Int32" Then - My.Application.Globix.CURRENT_DOCTYPE_ID = cmbDoctype.SelectedValue + My.Application.Globix.CURRENT_DOCTYPE_ID = oSelectedItem.Guid - 'lblhinweis.Visible = False - ClearNotice() + 'lblhinweis.Visible = False + ClearNotice() - 'lblerror.Visible = False - ClearError() + 'lblerror.Visible = False + ClearError() + + pnlIndex.Controls.Clear() + Dim oSql As String = "Select * from TBDD_DOKUMENTART WHERE GUID = " & oSelectedItem.Guid + Dim oFilter = "GUID = " & oSelectedItem.Guid + My.Application.Globix.CURR_DT_DOCTYPE = _DataASorDB.GetDatatable("DD_ECM", oSql, "TBDD_DOKUMENTART", oFilter, "") - Me.pnlIndex.Controls.Clear() + My.Application.Globix.CURRENT_DOCTYPE_DuplicateHandling = My.Application.Globix.CURR_DT_DOCTYPE.Rows(0).Item("DUPLICATE_HANDLING").ToString + Refresh_IndexeMan(My.Application.Globix.CURRENT_DOCTYPE_ID) - Dim oSql As String = "Select * from TBDD_DOKUMENTART WHERE GUID = " & cmbDoctype.SelectedValue.ToString - Dim oFilter = "GUID = " & cmbDoctype.SelectedValue.ToString - My.Application.Globix.CURR_DT_DOCTYPE = _DataASorDB.GetDatatable("DD_ECM", oSql, "TBDD_DOKUMENTART", oFilter, "") - - - My.Application.Globix.CURRENT_DOCTYPE_DuplicateHandling = My.Application.Globix.CURR_DT_DOCTYPE.Rows(0).Item("DUPLICATE_HANDLING").ToString - Refresh_IndexeMan(cmbDoctype.SelectedValue) - End If End If End Sub @@ -355,11 +390,15 @@ Public Class frmGlobix_Index Dim oControlCount As Integer = 1 Dim oLabelPosition As Integer = 11 Dim oControlPosition As Integer = 33 - Dim oControls As New GlobixControls(_LogConfig, pnlIndex, Me) - + ' 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 + } + _Controls = oControls If DT_INDEXEMAN.Rows.Count = 0 Then - ShowError("Keine Manuellen Indizes für die " & vbNewLine & "Dokumentart " & cmbDoctype.Text & " definiert") - _Logger.Info(" - Keine Manuellen Indizes für die " & vbNewLine & "Dokumentart " & cmbDoctype.Text & " definiert") + ShowError("Keine Manuellen Indizes für die " & vbNewLine & "Dokumentart " & ComboBoxEdit1.Text & " definiert") + _Logger.Info(" - Keine Manuellen Indizes für die " & vbNewLine & "Dokumentart " & ComboBoxEdit1.Text & " definiert") End If For Each oRow As DataRow In DT_INDEXEMAN.Rows @@ -387,7 +426,8 @@ Public Class frmGlobix_Index End If Case "INTEGER" If (oSQLSuggestion = 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, oDefaultValue, AddNewItems, PreventDuplicates, oSQLSuggestion) + + Dim oControl = oControls.AddLookupControl(oControlName, oControlPosition, MultiSelect, oDataType, oRow.Item("SQL_RESULT"), oConnectionId, oDefaultValue, AddNewItems, PreventDuplicates) If Not IsNothing(oControl) Then pnlIndex.Controls.Add(oControl) End If @@ -400,7 +440,7 @@ Public Class frmGlobix_Index End If Case "VARCHAR" If (oSQLSuggestion = 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, oDefaultValue, AddNewItems, PreventDuplicates, oSQLSuggestion) + Dim oControl = oControls.AddLookupControl(oControlName, oControlPosition, MultiSelect, oDataType, oRow.Item("SQL_RESULT"), oConnectionId, oDefaultValue, AddNewItems, PreventDuplicates) If Not IsNothing(oControl) Then pnlIndex.Controls.Add(oControl) End If @@ -419,7 +459,7 @@ Public Class frmGlobix_Index End If End If Case "DATE" - Dim oPicker = oControls.AddDateTimePicker(oControlName, oControlPosition, oDataType, oDefaultValue) + Dim oPicker = oControls.AddDateTimePicker(oControlName, oControlPosition, oDataType) pnlIndex.Controls.Add(oPicker) Case Else @@ -452,6 +492,122 @@ Public Class frmGlobix_Index MsgBox(ex.Message, MsgBoxStyle.Critical, "Unexpected error in LoadIndexe_Man:") End Try End Sub + Private Sub PrepareDependingControl(pControl As Control) + If TypeOf pControl Is Label Then + Exit Sub + End If + + 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 oDatatable As DataTable = My.Database.GetDatatable(oSQL) + + If Not IsNothing(oDatatable) Then + _Logger.Debug("Found [{0}] depending controls for [{1}]", oDatatable.Rows.Count, pControl.Name) + + For Each oRow As DataRow In oDatatable.Rows + Dim oControlName As String = NotNull(oRow.Item("NAME"), "") + Dim oConnectionId As Integer = NotNull(oRow.Item("CONNECTION_ID"), -1) + Dim oControlSql As String = NotNull(oRow.Item("SQL_RESULT"), "") + + If oConnectionId = -1 Or oControlSql = String.Empty Then + _Logger.Warn("Missing SQL Query or ConnectionId for Control [{0}]! Continuing.", oControlName) + Continue For + End If + + oControlSql = _Patterns.ReplaceUserValues(oControlSql, My.Application.Globix.CURRENT_DOCTYPE_ID) + oControlSql = _Patterns.ReplaceInternalValues(oControlSql) + oControlSql = _Patterns.ReplaceControlValues(oControlSql, pnlIndex) + _Logger.Debug("Setting new value for [{0}]", oControlName) + SetDependingControlResult(oControlName, oControlSql, oConnectionId) + Next + End If + Catch ex As Exception + _Logger.Error(ex) + End Try + End Sub + Private Sub SetDependingControlResult(IndexName As String, pSqlCommand As String, SqlConnectionId As Integer) + Try + If pSqlCommand Is Nothing OrElse pSqlCommand = String.Empty Then + _Logger.Warn("New Value for Index [{0}] could not be set. Supplied SQL is empty.") + Exit Sub + End If + + Dim oConnectionString = GetConnectionString(SqlConnectionId) + + + Dim oDatatable As DataTable = My.Database.GetDatatableWithConnection(pSqlCommand, oConnectionString) + Dim oFoundControl As Control = Nothing + + For Each oControl As Control In pnlIndex.Controls + If TypeOf oControl Is Label Then + Continue For + End If + + Dim oMeta = DirectCast(oControl.Tag, ControlMeta) + Dim oIndex As String = oMeta.IndexName + + If oIndex = IndexName Then + oFoundControl = oControl + Exit For + End If + Next + + If oFoundControl Is Nothing Then + _Logger.Warn("Depending Control for Index [{0}] not found!", IndexName) + End If + + If oDatatable Is Nothing Then + _Logger.Warn("Error in SQL Command: {0}", pSqlCommand) + End If + + Select Case oFoundControl.GetType.Name + Case GetType(DevExpress.XtraEditors.TextEdit).Name + If oDatatable.Rows.Count > 0 Then + Dim oFirstRow As DataRow = oDatatable.Rows.Item(0) + + If oFirstRow.ItemArray.Length > 0 Then + Dim oValue = oFirstRow.Item(0).ToString() + + _Logger.Debug("Setting Value for TextEdit [{0}]: [{1}]", oFoundControl.Name, oValue) + DirectCast(oFoundControl, DevExpress.XtraEditors.TextEdit).Text = oValue + End If + End If + Case GetType(LookupControl2).Name + _Logger.Debug("Setting Value for LookupControl [{0}]: [{1}]", oFoundControl.Name, "DATATABLE") + DirectCast(oFoundControl, LookupControl2).DataSource = oDatatable + Case GetType(ComboBox).Name + _Logger.Debug("Setting Value for Combobox [{0}]: [{1}]", oFoundControl.Name, "DATATABLE") + DirectCast(oFoundControl, ComboBox).DataSource = oDatatable + Case Else + _Logger.Debug("Could not set depending control result for [{0}]", oFoundControl.GetType.Name) + End Select + Catch ex As Exception + _Logger.Error(ex) + End Try + End Sub + Private Function GetLookupData(pLookup As LookupControl2, pSQLCommand As String, pConnectionId As Integer) + Dim oConnectionString = GetConnectionString(pConnectionId) + + If oConnectionString IsNot Nothing And pSQLCommand.Length > 0 Then + _Logger.Debug("Connection String (redacted): [{0}]", oConnectionString.Substring(0, 30)) + + If _Patterns.HasComplexPatterns(pSQLCommand) Then + _Logger.Debug(" >>sql enthält Platzhalter und wird erst während der Laufzeit gefüllt!", False) + Return Nothing + Else + pSQLCommand = _Patterns.ReplaceInternalValues(pSQLCommand) + pSQLCommand = _Patterns.ReplaceUserValues(pSQLCommand, My.Application.Globix.CURRENT_DOCTYPE_ID) + + Dim oDatatable = My.Database.GetDatatableWithConnection(pSQLCommand, oConnectionString) + Return oDatatable + End If + Else + _Logger.Warn("Connection String for control [{0}] is empty!", pLookup.Name) + Return Nothing + End If + End Function Function GetPlaceholderValue(InputValue As String, FileName As String, UserShortName As String) As String Dim oResult As String @@ -702,11 +858,13 @@ Public Class frmGlobix_Index _Logger.Debug("Manuelle Indexe geladen") If My.Application.Globix.CURR_DT_MAN_INDEXE.Rows.Count > 0 Then - My.Application.Globix.CURRENT_DOCTYPE_ID = Me.cmbDoctype.SelectedValue - If CheckWrite_IndexeMan(Me.cmbDoctype.SelectedValue) = True Then + Dim oDokart As DocType = ComboBoxEdit1.SelectedItem + My.Application.Globix.CURRENT_DOCTYPE_ID = oDokart.Guid + + If CheckWrite_IndexeMan(ComboBoxEdit1.SelectedItem) = True Then '##### Manuelle Indexe indexiert ##### _Logger.Info("Datei [" & My.Application.Globix.CURRENT_WORKFILE & "] wird nun indexiert...") - If FillIndexe_Autom(Me.cmbDoctype.SelectedValue) = True Then + If FillIndexe_Autom(oDokart.Guid) = True Then _Logger.Debug(" ...FillIndexe_Autom durchlaufen") 'Den Zielnamen zusammenbauen @@ -719,7 +877,7 @@ Public Class frmGlobix_Index 'Die Datei verschieben If Move_File2_Target() = True Then _Logger.Debug(" ...Move_File2_Target durchlaufen") - My.Application.Globix.CURRENT_LASTDOCTYPE = cmbDoctype.Text + My.Application.Globix.CURRENT_LASTDOCTYPE = oDokart.Name _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) diff --git a/GUIs.ZooFlow/ModuleHelpers.vb b/GUIs.ZooFlow/ModuleHelpers.vb index 845d5944..f3892991 100644 --- a/GUIs.ZooFlow/ModuleHelpers.vb +++ b/GUIs.ZooFlow/ModuleHelpers.vb @@ -57,6 +57,47 @@ Module ModuleHelpers Dim oSQL = "select * from TBGI_FUNCTION_REGEX" My.Application.Globix.DT_FUNCTION_REGEX = clsDataASorDB.GetDatatable("DD_ECM", oSQL, "TBGI_FUNCTION_REGEX", "", "") End Sub + Public Function GetConnectionString(id As Integer) + Dim connectionString As String = "" + Try + Dim oSQL = "SELECT * FROM TBDD_CONNECTION WHERE GUID = " & id + Dim DTConnection As DataTable = clsDataASorDB.GetDatatable("DD_ECM", oSQL, "TBDD_CONNECTION", "GUID = " & id, "") + If DTConnection.Rows.Count = 1 Then + Dim CSType = DTConnection.Rows(0).Item("SQL_PROVIDER").ToString.ToUpper + Select Case CSType + Case "MS-SQL".ToUpper + If DTConnection.Rows(0).Item("USERNAME").ToString.ToLower = "winauth" Then + connectionString = "Data Source=" & DTConnection.Rows(0).Item("SERVER") & ";Initial Catalog= " & DTConnection.Rows(0).Item("DATENBANK") & ";Trusted_Connection=True;" + Else + connectionString = "Data Source=" & DTConnection.Rows(0).Item("SERVER") & ";Initial Catalog= " & DTConnection.Rows(0).Item("DATENBANK") & ";User Id=" & DTConnection.Rows(0).Item("USERNAME") & ";Password=" & DTConnection.Rows(0).Item("PASSWORD") & ";" + End If + Case "MS-SQLServer".ToUpper + If DTConnection.Rows(0).Item("USERNAME").ToString.ToLower = "winauth" Then + connectionString = "Data Source=" & DTConnection.Rows(0).Item("SERVER") & ";Initial Catalog= " & DTConnection.Rows(0).Item("DATENBANK") & ";Trusted_Connection=True;" + Else + connectionString = "Data Source=" & DTConnection.Rows(0).Item("SERVER") & ";Initial Catalog= " & DTConnection.Rows(0).Item("DATENBANK") & ";User Id=" & DTConnection.Rows(0).Item("USERNAME") & ";Password=" & DTConnection.Rows(0).Item("PASSWORD") & ";" + End If + + Case "Oracle".ToUpper + If DTConnection.Rows(0).Item("BEMERKUNG").ToString.Contains("without tnsnames") Then + connectionString = "Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=" & DTConnection.Rows(0).Item("SERVER") & ")(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=" & + DTConnection.Rows(0).Item("DATENBANK") & ")));User Id=" & DTConnection.Rows(0).Item("USERNAME") & ";Password=" & DTConnection.Rows(0).Item("PASSWORD") & ";" + Else + connectionString = "Data Source=" & DTConnection.Rows(0).Item("SERVER") & ";Persist Security Info=True;User Id=" & DTConnection.Rows(0).Item("USERNAME") & ";Password=" & DTConnection.Rows(0).Item("PASSWORD") & ";Unicode=True" + End If + + + Case Else + MsgBox("ConnectionType not integrated", MsgBoxStyle.Critical, "Please check connection:") + End Select + End If + + Catch ex As Exception + MsgBox(ex.Message, MsgBoxStyle.Critical, "Error in GetConnectionString:") + + End Try + Return connectionString + End Function Public Function FilterDatatable(myDatatable As DataTable, myFilter As String, mycheckColumn As String, pSortString As String, returnDT As Boolean) As Object Try If myDatatable.Rows.Count = 0 Then diff --git a/GUIs.ZooFlow/Search/ClassControlCreator.vb b/GUIs.ZooFlow/Search/ClassControlCreator.vb index 21d7f3c6..d0a327e1 100644 --- a/GUIs.ZooFlow/Search/ClassControlCreator.vb +++ b/GUIs.ZooFlow/Search/ClassControlCreator.vb @@ -35,12 +35,12 @@ Public Class ClassControlCreator Private Logger As Logger Private Property Form As frmSearchStart Private Property TabPage As XtraTabPage - Public Class ControlMeta Public Property IndexName As String Public Property IndexType As String Public Property MultipleValues As Boolean = False End Class + ''' ''' Standard Eigenschaften für alle Controls ''' diff --git a/GUIs.ZooFlow/Search/frmFlowSearch.vb b/GUIs.ZooFlow/Search/frmFlowSearch.vb index 643c3eb6..ac7679de 100644 --- a/GUIs.ZooFlow/Search/frmFlowSearch.vb +++ b/GUIs.ZooFlow/Search/frmFlowSearch.vb @@ -384,7 +384,6 @@ Public Class frmFlowSearch End Sub Private Function GET_DATE_LIMITATION(pInput As String) As String Try - Dim oReturn As String If SEARCH_FACT_DATE_ATTRIBUTE = "ADDED_WHEN" Then Return pInput.Replace("@ATTRIBUTE", "OBJ.ADDED_WHEN") Else diff --git a/GUIs.ZooFlow/ZooFlow.vbproj b/GUIs.ZooFlow/ZooFlow.vbproj index 266899d7..a35e5464 100644 --- a/GUIs.ZooFlow/ZooFlow.vbproj +++ b/GUIs.ZooFlow/ZooFlow.vbproj @@ -62,6 +62,9 @@ + + ..\GUIs.GlobalIndexer\bin\Debug\DigitalData.GUIs.GlobalIndexer.dll + P:\Visual Studio Projekte\Bibliotheken\MSG .NET\Bin\22_11_19\Independentsoft.Msg.dll