diff --git a/GUIs.Common/DocumentResultList/Document.vb b/GUIs.Common/DocumentResultList/Document.vb index aacc6dfa..1ef3c4d0 100644 --- a/GUIs.Common/DocumentResultList/Document.vb +++ b/GUIs.Common/DocumentResultList/Document.vb @@ -32,6 +32,7 @@ Namespace DocumentResultList Public Property TempPath As String = Nothing Public Property FileHash As String = Nothing Public Property DocumentType As String = Nothing + Public Property DisplayFileName As String = Nothing Public Sub New(pPrimaryKey As Long) Id = pPrimaryKey diff --git a/GUIs.Common/DocumentResultList/Loader.vb b/GUIs.Common/DocumentResultList/Loader.vb index 52185407..cd1b4e52 100644 --- a/GUIs.Common/DocumentResultList/Loader.vb +++ b/GUIs.Common/DocumentResultList/Loader.vb @@ -56,15 +56,17 @@ Namespace DocumentResultList Dim oDocumentInfo As DocumentInfo = Client.GetDocumentInfo(User.UserId, pObjectId) Dim oFileInfo As New FileInfo(oDocumentInfo.FullPath) - ' Load Doctype Attribute + ' Load System Attributes Dim oDoctype As VariableValue = Client.GetVariableValue(pObjectId, Attributes.ATTRIBUTE_DOCTYPE) + Dim oDisplayFileName As VariableValue = Client.GetVariableValue(pObjectId, Attributes.ATTRIBUTE_DISPLAY_FILENAME) Dim oResultDocumentInfo As New Document(pObjectId) With { .Contents = Load_FromDisk(oDocumentInfo.FullPath), .AccessRight = oDocumentInfo.AccessRight, .FullPath = oDocumentInfo.FullPath, .Extension = oFileInfo.Extension.Substring(1), - .DocumentType = oDoctype.Value + .DocumentType = oDoctype.Value, + .DisplayFileName = oDisplayFileName.Value } Return oResultDocumentInfo @@ -81,8 +83,9 @@ Namespace DocumentResultList Return Nothing End If - ' Load Doctype Attribute + ' Load System Attributes Dim oDoctype As VariableValue = Client.GetVariableValue(pObjectId, Attributes.ATTRIBUTE_DOCTYPE) + Dim oDisplayFileName As VariableValue = Client.GetVariableValue(pObjectId, Attributes.ATTRIBUTE_DISPLAY_FILENAME) Dim oResultDocumentInfo As New Document(pObjectId) With { .Contents = oFileObject._FileContents, @@ -90,7 +93,8 @@ Namespace DocumentResultList .AccessRight = Rights.AccessRight.FULL, .FileHash = oFileObject._FileHash, .FullPath = Nothing, - .DocumentType = oDoctype.Value + .DocumentType = oDoctype.Value, + .DisplayFileName = oDisplayFileName.Value } Return oResultDocumentInfo diff --git a/GUIs.Common/My Project/licenses.licx b/GUIs.Common/My Project/licenses.licx index 2cf99fc3..4c23d9e3 100644 --- a/GUIs.Common/My Project/licenses.licx +++ b/GUIs.Common/My Project/licenses.licx @@ -1,4 +1,7 @@ -DevExpress.XtraEditors.Repository.RepositoryItemTextEdit, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a DevExpress.XtraGrid.GridControl, DevExpress.XtraGrid.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a -DevExpress.XtraBars.Ribbon.RibbonControl, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a +DevExpress.XtraEditors.ProgressBarControl, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a +DevExpress.XtraEditors.Repository.RepositoryItemTextEdit, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a DevExpress.XtraLayout.LayoutControl, DevExpress.XtraLayout.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a +DevExpress.XtraEditors.Repository.RepositoryItemComboBox, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a +DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a +DevExpress.XtraBars.Ribbon.RibbonControl, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a diff --git a/GUIs.Common/ObjectPropertyDialog/frmObjectPropertyDialog.vb b/GUIs.Common/ObjectPropertyDialog/frmObjectPropertyDialog.vb index 68968ad0..4cac70d8 100644 --- a/GUIs.Common/ObjectPropertyDialog/frmObjectPropertyDialog.vb +++ b/GUIs.Common/ObjectPropertyDialog/frmObjectPropertyDialog.vb @@ -71,7 +71,7 @@ Public Class frmObjectPropertyDialog Private Async Function GetAttributesForBusinessEntity(EntityId As Long) As Task(Of List(Of Attribute)) Try - Dim oSQL = $"SELECT * FROM VWIDB_BE_ATTRIBUTE WHERE BE_ID = {EntityId}" + Dim oSQL = $"SELECT * FROM VWIDB_BE_ATTRIBUTE WHERE BE_ID = {EntityId} AND LANG_CODE = '{_Environment.User.Language}'" Dim oResult = Await _Client.GetDatatableFromIDBAsync(oSQL) If oResult.OK = False Then diff --git a/GUIs.Common/frmDocumentResultList.Designer.vb b/GUIs.Common/frmDocumentResultList.Designer.vb index 2398c636..4d9a79b8 100644 --- a/GUIs.Common/frmDocumentResultList.Designer.vb +++ b/GUIs.Common/frmDocumentResultList.Designer.vb @@ -113,7 +113,7 @@ Partial Class frmDocumentResultList ' Me.SplitContainerControl1.Panel2.Controls.Add(Me.SplitContainerControl2) resources.ApplyResources(Me.SplitContainerControl1.Panel2, "SplitContainerControl1.Panel2") - Me.SplitContainerControl1.SplitterPosition = 382 + Me.SplitContainerControl1.SplitterPosition = 389 ' 'GridControl1 ' @@ -296,12 +296,12 @@ Partial Class frmDocumentResultList Me.MenuItemPropertiesZooFlow.ImageOptions.SvgImage = Global.DigitalData.GUIs.Common.My.Resources.Resources.editcolors Me.MenuItemPropertiesZooFlow.Name = "MenuItemPropertiesZooFlow" ' - 'BarButtonItem1 + 'ButtonRefresh ' - resources.ApplyResources(Me.ButtonRefresh, "BarButtonItem1") + resources.ApplyResources(Me.ButtonRefresh, "ButtonRefresh") Me.ButtonRefresh.Id = 29 Me.ButtonRefresh.ImageOptions.SvgImage = Global.DigitalData.GUIs.Common.My.Resources.Resources.refreshallpivottable - Me.ButtonRefresh.Name = "BarButtonItem1" + Me.ButtonRefresh.Name = "ButtonRefresh" ' 'RibbonPage1 ' diff --git a/GUIs.Common/frmDocumentResultList.resx b/GUIs.Common/frmDocumentResultList.resx index 03bc4f0f..4d9932fc 100644 --- a/GUIs.Common/frmDocumentResultList.resx +++ b/GUIs.Common/frmDocumentResultList.resx @@ -426,7 +426,7 @@ Eigenschaften - + Ergebnisse aktualisieren @@ -455,10 +455,10 @@ 1189, 132 - 0, 647 + 0, 649 - 1189, 24 + 1189, 22 RibbonStatusBar @@ -485,7 +485,7 @@ 2 - 382, 511 + 389, 513 0 @@ -539,7 +539,7 @@ GridBand2 - 370, 223 + 363, 223 0 @@ -587,7 +587,7 @@ GridBand3 - 370, 278 + 363, 280 0 @@ -620,7 +620,7 @@ 1 - 370, 511 + 363, 513 0 @@ -656,7 +656,7 @@ 1 - 762, 511 + 762, 513 2 @@ -704,7 +704,7 @@ 0, 0 - 413, 511 + 413, 513 0 @@ -737,7 +737,7 @@ 1 - 1189, 515 + 1189, 517 5 @@ -978,10 +978,10 @@ DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - BarButtonItem1 + + ButtonRefresh - + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a diff --git a/GUIs.Common/frmDocumentResultList.vb b/GUIs.Common/frmDocumentResultList.vb index b4b341c4..a54c3d05 100644 --- a/GUIs.Common/frmDocumentResultList.vb +++ b/GUIs.Common/frmDocumentResultList.vb @@ -77,7 +77,8 @@ Public Class frmDocumentResultList Public Event NeedsRefresh As EventHandler(Of Integer) Implements IResultForm.NeedsRefresh Public Event ResultsRefreshed As EventHandler(Of List(Of DocumentResultList.DocumentResult)) - Public Delegate Sub SetDatasourceCallback(pDatatable As DataTable) + Private Delegate Sub DatasourceDelegate(View As GridView, Datasource As Object) + Private Delegate Function RefreshResultsDelegate(Results As IEnumerable(Of BaseResult)) As Boolean Public Sub New(pLogConfig As LogConfig, pEnvironment As Environment, pParams As DocumentResultList.Params) ' Dieser Aufruf ist für den Designer erforderlich. @@ -315,6 +316,7 @@ Public Class frmDocumentResultList Private Async Function Watcher_UpdateFile(pFile As DocumentResultList.Watcher.OpenFile, pCreateNewVersion As Boolean) As Task Dim oFileInfo As New FileInfo(pFile.FilePath) + Dim oDisplayName As String = pFile.Document.DisplayFileName Dim oObjectId = Await _IDBClient.UpdateFileAsync(pFile.Document.Id, pFile.FilePath, New Options.UpdateFileOptions With { .CreateNewFileVersion = pCreateNewVersion, .Language = Environment.User.Language, @@ -322,16 +324,17 @@ Public Class frmDocumentResultList }) If IsNothing(oObjectId) Then - MsgBox($"Beim Speichern der Datei '{oFileInfo.Name}' Fehler ist ein Fehler aufgetreten!", MsgBoxStyle.Critical, Text) + MsgBox($"Beim Speichern der Datei '{oDisplayName}' Fehler ist ein Fehler aufgetreten!", MsgBoxStyle.Critical, Text) Else - MsgBox($"Die Datei '{oFileInfo.Name}' wurde erfolgreich gespeichert!", MsgBoxStyle.Information, Text) + 'MsgBox($"Die Datei '{oDisplayName}' wurde erfolgreich gespeichert!", MsgBoxStyle.Information, Text) RaiseEvent NeedsRefresh(Me, Params.ProfileGuid) End If End Function Private Async Function Watcher_Ask(pFile As DocumentResultList.Watcher.OpenFile) As Task Dim oFileInfo = New FileInfo(pFile.FilePath) - Dim oMessage = $"Die Datei '{oFileInfo.Name}' wurde außerhalb des Systems verändert. Wollen Sie diese Änderung als neue Version in das System übernehmen oder überschreiben?" + Dim oDisplayName = pFile.Document.DisplayFileName + Dim oMessage = $"Die Datei '{oDisplayName}' wurde außerhalb des Systems verändert. Wollen Sie diese Änderung als neue Version in das System übernehmen oder überschreiben?" Dim oMessageBox As New MsgBoxEx(oMessage, "Datei verändert", MessageBoxIcon.Question) oMessageBox.SetButtons("Überschreiben", "Neue Version", "Abbrechen") @@ -370,23 +373,32 @@ Public Class frmDocumentResultList Public Function RefreshResults(pResults As IEnumerable(Of BaseResult)) As Boolean Implements IResultForm.RefreshResults - _IsLoading = True - Try - UpdateTotalResults() - UpdateGridData() + ' This is needed to update the grid from another form like frmMatch + ' Another form means another thread, so we need a delegate here + If InvokeRequired Then + Dim oDelegate As New RefreshResultsDelegate(AddressOf RefreshResults) + Return GridControl1.Invoke(oDelegate, pResults) + Else + _IsLoading = True + Try + _ResultLists = pResults - Return True - Catch ex As Exception - Logger.Error(ex) + UpdateTotalResults() + UpdateGridData() - MessageBox.Show("Error while loading results:" & vbNewLine & vbNewLine & ex.Message, Text, MessageBoxButtons.OK, MessageBoxIcon.Error) - Return False - Finally - _IsLoading = False - End Try + Return True + Catch ex As Exception + Logger.Error(ex) + + MessageBox.Show("Error while refreshing results:" & vbNewLine & vbNewLine & ex.Message, Text, MessageBoxButtons.OK, MessageBoxIcon.Error) + Return False + Finally + _IsLoading = False + End Try + End If End Function - Private Sub LoadGridData(Result As DocumentResultList.DocumentResult) + Private Sub LoadGridData(View As GridView, Result As DocumentResultList.DocumentResult) If Result.Datatable.Columns.Contains(COLUMN_DOCID) = False Then Throw New ApplicationException($"Datatable is missing DocId Column [{COLUMN_DOCID}] for search {Result.Title}!") End If @@ -395,22 +407,26 @@ Public Class frmDocumentResultList Throw New ApplicationException($"Datatable is missing Filepath Column [{COLUMN_FILEPATH}] for search {Result.Title}!") End If - ' This is needed to update the grid from another form like frmMatch - ' Another form means another thread, so we need a delegate here - If GridControl1.InvokeRequired Then - Dim oCallback As New SetDatasourceCallback(AddressOf SetGridDataSource) - Invoke(oCallback, Result.Datatable) - - Else - SetGridDataSource(Result.Datatable) - End If + SetGridDataSource(View, Result.Datatable) End Sub - Private Sub SetGridDataSource(pTable As DataTable) - GridControl1.DataSource = Nothing - GridControl1.DataSource = pTable + + Private Sub SetGridDataSource(pView As GridView, pTable As DataTable) + Dim oSavedRowHandle As Integer = pView.FocusedRowHandle + pView.BeginDataUpdate() + + Try + pView.FocusedRowHandle = GridControl.AutoFilterRowHandle + pView.GridControl.DataSource = Nothing + pView.GridControl.DataSource = pTable + pView.FocusedRowHandle = oSavedRowHandle + Finally + pView.EndDataUpdate() + End Try End Sub + + Private Sub UpdateGridData() ' Load Grids For oIndex = 0 To _ResultLists.Count - 1 @@ -418,7 +434,7 @@ Public Class frmDocumentResultList Case 0 Dim oResult As DocumentResultList.DocumentResult = _ResultLists.Item(0) - LoadGridData(oResult) + LoadGridData(GridView1, oResult) CreateDocumentGrid(GridView1, oResult) RestoreLayout(GridView1) UpdateGridHeader(_ResultLists, oIndex, oResult.Datatable.Rows.Count) @@ -426,7 +442,7 @@ Public Class frmDocumentResultList Case 1 Dim oResult As DocumentResultList.DocumentResult = _ResultLists.Item(1) - LoadGridData(oResult) + LoadGridData(GridView2, oResult) CreateDocumentGrid(GridView2, oResult) RestoreLayout(GridView2) UpdateGridHeader(_ResultLists, oIndex, oResult.Datatable.Rows.Count) @@ -434,7 +450,7 @@ Public Class frmDocumentResultList Case 2 Dim oResult As DocumentResultList.DocumentResult = _ResultLists.Item(2) - LoadGridData(oResult) + LoadGridData(GridView3, oResult) CreateDocumentGrid(GridView3, oResult) RestoreLayout(GridView3) UpdateGridHeader(_ResultLists, oIndex, oResult.Datatable.Rows.Count) diff --git a/Modules.Base/Base/IDB/Attributes.vb b/Modules.Base/Base/IDB/Attributes.vb index a6b62527..bf7bd740 100644 --- a/Modules.Base/Base/IDB/Attributes.vb +++ b/Modules.Base/Base/IDB/Attributes.vb @@ -1,6 +1,15 @@ Namespace IDB Public Class Attributes Public Const ATTRIBUTE_DOCTYPE = "Doctype" + Public Const ATTRIBUTE_DYNAMIC_FOLDER = "Dynamic Folder" + + Public Const ATTRIBUTE_ORIGIN_FILENAME = "OriginFileName" + Public Const ATTRIBUTE_ORIGIN_CHANGED = "OriginChangedDatetime" + Public Const ATTRIBUTE_ORIGIN_CREATED = "OriginCreationDatetime" + + Public Const ATTRIBUTE_DISPLAY_FILENAME = "DisplayFileName" + Public Const ATTRIBUTE_DISPLAY_FILENAME1 = "DisplayFileName1" + End Class End Namespace \ No newline at end of file diff --git a/Service.EDMIService/EDMIService.vbproj b/Service.EDMIService/EDMIService.vbproj index 00656f80..aae3abe5 100644 --- a/Service.EDMIService/EDMIService.vbproj +++ b/Service.EDMIService/EDMIService.vbproj @@ -242,6 +242,10 @@ + + {6ea0c51f-c2b1-4462-8198-3de0b32b74f8} + Base + {44982F9B-6116-44E2-85D0-F39650B1EF99} Config diff --git a/Service.EDMIService/Methods/GlobalIndexer/ImportFile/ImportFileMethod.vb b/Service.EDMIService/Methods/GlobalIndexer/ImportFile/ImportFileMethod.vb index b3ea349a..ae764150 100644 --- a/Service.EDMIService/Methods/GlobalIndexer/ImportFile/ImportFileMethod.vb +++ b/Service.EDMIService/Methods/GlobalIndexer/ImportFile/ImportFileMethod.vb @@ -6,6 +6,7 @@ Imports DigitalData.Modules.Language Imports DigitalData.Services.EDMIService.Methods.Database Imports DigitalData.Services.EDMIService.Methods.IDB Imports DigitalData.Modules.ZooFlow.State +Imports DigitalData.Modules.Base.IDB Namespace Methods.GlobalIndexer.ImportFile Public Class ImportFileMethod @@ -86,9 +87,10 @@ Namespace Methods.GlobalIndexer.ImportFile Logger.Info("Collecting Attributes for ObjectId [{0}]", oResponse.ObjectId) Dim oFinalAttributes As New Dictionary(Of String, List(Of String)) From { - {"DisplayFileName", New List(Of String) From {oDisplayFilename}}, - {"Dynamic Folder", New List(Of String) From {oDynamicFilePath}} + {Attributes.ATTRIBUTE_DISPLAY_FILENAME, New List(Of String) From {oDisplayFilename}}, + {Attributes.ATTRIBUTE_DYNAMIC_FOLDER, New List(Of String) From {oDynamicFilePath}} } + oFinalAttributes = oFinalAttributes. Concat(Helpers.UserAttributesToDictionary(oUserAttributes)). Concat(Helpers.UserAttributesToDictionary(oAutoAttributes)). diff --git a/Service.EDMIService/Methods/IDB/NewFile/NewFileMethod.vb b/Service.EDMIService/Methods/IDB/NewFile/NewFileMethod.vb index 49251aaf..43a37ab1 100644 --- a/Service.EDMIService/Methods/IDB/NewFile/NewFileMethod.vb +++ b/Service.EDMIService/Methods/IDB/NewFile/NewFileMethod.vb @@ -1,4 +1,5 @@ Imports System.Data.SqlClient +Imports DigitalData.Modules.Base.IDB Imports DigitalData.Modules.Database Imports DigitalData.Modules.Database.MSSQLServer.TransactionMode Imports DigitalData.Modules.Logging @@ -105,9 +106,9 @@ Namespace Methods.IDB.NewFile '--------------------------------------------------------------------------- Dim oSystemAttributes As New Dictionary(Of String, Object) From { - {"OriginFileName", pData.File.FileName}, - {"OriginCreationDatetime", pData.File.FileCreatedAt}, - {"OriginChangedDatetime", pData.File.FileChangedAt} + {Attributes.ATTRIBUTE_ORIGIN_FILENAME, pData.File.FileName}, + {Attributes.ATTRIBUTE_ORIGIN_CREATED, pData.File.FileCreatedAt}, + {Attributes.ATTRIBUTE_ORIGIN_CHANGED, pData.File.FileChangedAt} } For Each oAttribute As KeyValuePair(Of String, Object) In oSystemAttributes