From 665a23d8a7277ff8e38649232d080a8b5143ceef Mon Sep 17 00:00:00 2001 From: Jonathan Jenne Date: Tue, 29 Mar 2022 11:05:59 +0200 Subject: [PATCH] EDMI: Add generic ImportFile Method --- Modules.EDMIAPI/Client.vb | 17 +- ...rence.Globix_ImportFileResponse.datasource | 10 + ...rvice.Methods.GlobalIndexer.ImportFile.xsd | 8 +- ...ces.EDMIService.Methods.IDB.ImportFile.xsd | 28 + .../DigitalData.Services.EDMIService.wsdl | 33 +- .../DigitalData.Services.EDMIService.xsd | 45 +- .../EDMIServiceReference/Reference.svcmap | 3 +- .../EDMIServiceReference/Reference.vb | 612 ++++++++++++------ .../EDMIServiceReference/service.wsdl | 21 +- Modules.EDMIAPI/EDMI.API.vbproj | 7 + Modules.EDMIAPI/Modules/Globix/ImportFile.vb | 6 +- Modules.EDMIAPI/Modules/IDB/ImportFile.vb | 75 +++ Service.EDMIService/EDMIService.vb | 18 +- Service.EDMIService/EDMIService.vbproj | 4 +- Service.EDMIService/IDB/Helpers.vb | 76 +-- Service.EDMIService/IDB/IDBObject.vb | 7 - Service.EDMIService/IEDMIService.vb | 13 +- .../ImportFile/ImportFileMethod.vb | 32 +- .../ImportFile/ImportFileRequest.vb | 2 +- .../ImportFile/ImportFileResponse.vb | 2 +- .../IDB/ImportFile/ImportFileMethod.vb | 94 +++ .../IDB/ImportFile/ImportFileRequest.vb | 53 ++ .../IDB/ImportFile/ImportFileResponse.vb | 22 + .../Methods/IDB/NewFile/NewFileMethod.vb | 2 +- .../SetAttributeValueMethod.vb | 2 +- 25 files changed, 833 insertions(+), 359 deletions(-) create mode 100644 Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMI.API.EDMIServiceReference.Globix_ImportFileResponse.datasource create mode 100644 Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Methods.IDB.ImportFile.xsd create mode 100644 Modules.EDMIAPI/Modules/IDB/ImportFile.vb delete mode 100644 Service.EDMIService/IDB/IDBObject.vb create mode 100644 Service.EDMIService/Methods/IDB/ImportFile/ImportFileMethod.vb create mode 100644 Service.EDMIService/Methods/IDB/ImportFile/ImportFileRequest.vb create mode 100644 Service.EDMIService/Methods/IDB/ImportFile/ImportFileResponse.vb diff --git a/Modules.EDMIAPI/Client.vb b/Modules.EDMIAPI/Client.vb index 811203cb..9b7b7855 100644 --- a/Modules.EDMIAPI/Client.vb +++ b/Modules.EDMIAPI/Client.vb @@ -272,17 +272,16 @@ Public Class Client End Try End Function - Public Async Function Globix_ImportFileAsync( + Public Async Function ImportFileAsync( pFilePath As String, - pProfileId As Integer, pAttributeValues As List(Of UserAttributeValue), pObjectStoreName As String, pObjectKind As String, pIDBDoctypeId As String, Optional pImportOptions As Options.ImportFileOptions = Nothing) As Task(Of ImportFileResponse) Try - Dim oImportFile As New Modules.Globix.ImportFile(LogConfig, Channel) - Return Await oImportFile.RunAsync(pFilePath, pProfileId, pAttributeValues, pObjectStoreName, pObjectKind, pIDBDoctypeId, pImportOptions) + Dim oImportFile As New Modules.IDB.ImportFile(LogConfig, Channel) + Return Await oImportFile.RunAsync(pFilePath, pAttributeValues, pObjectStoreName, pObjectKind, pIDBDoctypeId, pImportOptions) Catch ex As Exception Logger.Error(ex) @@ -290,16 +289,19 @@ Public Class Client End Try End Function - Public Async Function FileImporter_ImportFileAsync( + + + Public Async Function Globix_ImportFileAsync( pFilePath As String, + pProfileId As Integer, pAttributeValues As List(Of UserAttributeValue), pObjectStoreName As String, pObjectKind As String, pIDBDoctypeId As String, - Optional pImportOptions As Options.ImportFileOptions = Nothing) As Task(Of ImportFileResponse) + Optional pImportOptions As Options.ImportFileOptions = Nothing) As Task(Of Globix_ImportFileResponse) Try Dim oImportFile As New Modules.Globix.ImportFile(LogConfig, Channel) - Return Await oImportFile.RunAsync(pFilePath, 9999, pAttributeValues, pObjectStoreName, pObjectKind, pIDBDoctypeId, pImportOptions) + Return Await oImportFile.RunAsync(pFilePath, pProfileId, pAttributeValues, pObjectStoreName, pObjectKind, pIDBDoctypeId, pImportOptions) Catch ex As Exception Logger.Error(ex) @@ -319,6 +321,7 @@ Public Class Client End Try End Function + Public Async Function ZooFlow_GetFileObjectAsync(pObjectId As Long, pLoadFileContents As Boolean) As Task(Of FileObject) Try Dim oGetFileObject As New Modules.Zooflow.GetFileObject(LogConfig, Me) diff --git a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMI.API.EDMIServiceReference.Globix_ImportFileResponse.datasource b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMI.API.EDMIServiceReference.Globix_ImportFileResponse.datasource new file mode 100644 index 00000000..6a352c0d --- /dev/null +++ b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMI.API.EDMIServiceReference.Globix_ImportFileResponse.datasource @@ -0,0 +1,10 @@ + + + + DigitalData.Modules.EDMI.API.EDMIServiceReference.Globix_ImportFileResponse, Connected Services.EDMIServiceReference.Reference.vb.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + \ No newline at end of file diff --git a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Methods.GlobalIndexer.ImportFile.xsd b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Methods.GlobalIndexer.ImportFile.xsd index 4c37d8f8..1ca263ef 100644 --- a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Methods.GlobalIndexer.ImportFile.xsd +++ b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Methods.GlobalIndexer.ImportFile.xsd @@ -3,7 +3,7 @@ - + @@ -14,8 +14,8 @@ - - + + @@ -24,5 +24,5 @@ - + \ No newline at end of file diff --git a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Methods.IDB.ImportFile.xsd b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Methods.IDB.ImportFile.xsd new file mode 100644 index 00000000..69dc834c --- /dev/null +++ b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Methods.IDB.ImportFile.xsd @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.wsdl b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.wsdl index 04335481..b2a391ba 100644 --- a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.wsdl +++ b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.wsdl @@ -22,9 +22,10 @@ - + + @@ -182,12 +183,6 @@ - - - - - - @@ -200,6 +195,18 @@ + + + + + + + + + + + + @@ -332,10 +339,6 @@ - - - - @@ -344,6 +347,14 @@ + + + + + + + + diff --git a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.xsd b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.xsd index d6450046..4ac19ce4 100644 --- a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.xsd +++ b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.xsd @@ -10,9 +10,10 @@ - + + @@ -291,45 +292,59 @@ - + - + - + - + - + - + - + - + - + - + - + + + + + + + + + + + + + + + - + @@ -343,7 +358,7 @@ - + @@ -359,7 +374,7 @@ - + diff --git a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/Reference.svcmap b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/Reference.svcmap index c9f8aca4..bc5505c0 100644 --- a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/Reference.svcmap +++ b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/Reference.svcmap @@ -44,9 +44,10 @@ - + + diff --git a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/Reference.vb b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/Reference.vb index ca2bcac0..92d8bf53 100644 --- a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/Reference.vb +++ b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/Reference.vb @@ -31,9 +31,10 @@ Namespace EDMIServiceReference System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.UpdateFileResponse)), _ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.SetAttributeValueResponse)), _ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.GetAttributeValueResponse)), _ - System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.ImportFileResponse)), _ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.GetFileObjectResponse)), _ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.CheckInOutFileResponse)), _ + System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.ImportFileResponse)), _ + System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.Globix_ImportFileResponse)), _ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.GetClientConfigResponse))> _ Partial Public Class BaseResponse Inherits Object @@ -176,14 +177,16 @@ Namespace EDMIServiceReference System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.SetAttributeValueResponse)), _ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.GetAttributeValueRequest)), _ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.GetAttributeValueResponse)), _ - System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.ImportFileRequest)), _ - System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.ImportFileResponse)), _ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.GetFileObjectRequest)), _ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.GetFileObjectResponse)), _ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.FileObject)), _ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.CheckInOutFileRequest)), _ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.CheckInOutFileAction)), _ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.CheckInOutFileResponse)), _ + System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.ImportFileRequest)), _ + System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.ImportFileResponse)), _ + System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.Globix_ImportFileRequest)), _ + System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.Globix_ImportFileResponse)), _ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.RightsAccessRight))> _ Partial Public Class ScalarResult Inherits EDMIServiceReference.BaseResponse @@ -280,14 +283,16 @@ Namespace EDMIServiceReference System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.SetAttributeValueResponse)), _ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.GetAttributeValueRequest)), _ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.GetAttributeValueResponse)), _ - System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.ImportFileRequest)), _ - System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.ImportFileResponse)), _ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.GetFileObjectRequest)), _ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.GetFileObjectResponse)), _ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.FileObject)), _ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.CheckInOutFileRequest)), _ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.CheckInOutFileAction)), _ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.CheckInOutFileResponse)), _ + System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.ImportFileRequest)), _ + System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.ImportFileResponse)), _ + System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.Globix_ImportFileRequest)), _ + System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.Globix_ImportFileResponse)), _ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.RightsAccessRight))> _ Partial Public Class GetScalarValueResponse Inherits EDMIServiceReference.BaseResponse @@ -450,14 +455,16 @@ Namespace EDMIServiceReference System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.SetAttributeValueRequest)), _ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.SetAttributeValueResponse)), _ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.GetAttributeValueRequest)), _ - System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.ImportFileRequest)), _ - System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.ImportFileResponse)), _ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.GetFileObjectRequest)), _ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.GetFileObjectResponse)), _ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.FileObject)), _ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.CheckInOutFileRequest)), _ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.CheckInOutFileAction)), _ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.CheckInOutFileResponse)), _ + System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.ImportFileRequest)), _ + System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.ImportFileResponse)), _ + System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.Globix_ImportFileRequest)), _ + System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.Globix_ImportFileResponse)), _ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.RightsAccessRight))> _ Partial Public Class GetAttributeValueResponse Inherits EDMIServiceReference.BaseResponse @@ -497,10 +504,35 @@ Namespace EDMIServiceReference _ - Partial Public Class ImportFileResponse + Partial Public Class GetFileObjectResponse + Inherits EDMIServiceReference.BaseResponse + + _ + Private FileObjectField As EDMIServiceReference.FileObject + + _ + Public Property FileObject() As EDMIServiceReference.FileObject + Get + Return Me.FileObjectField + End Get + Set + If (Object.ReferenceEquals(Me.FileObjectField, value) <> true) Then + Me.FileObjectField = value + Me.RaisePropertyChanged("FileObject") + End If + End Set + End Property + End Class + + _ + Partial Public Class CheckInOutFileResponse Inherits EDMIServiceReference.BaseResponse _ @@ -522,24 +554,24 @@ Namespace EDMIServiceReference _ - Partial Public Class GetFileObjectResponse + Partial Public Class ImportFileResponse Inherits EDMIServiceReference.BaseResponse _ - Private FileObjectField As EDMIServiceReference.FileObject + Private ObjectIdField As Long _ - Public Property FileObject() As EDMIServiceReference.FileObject + Public Property ObjectId() As Long Get - Return Me.FileObjectField + Return Me.ObjectIdField End Get Set - If (Object.ReferenceEquals(Me.FileObjectField, value) <> true) Then - Me.FileObjectField = value - Me.RaisePropertyChanged("FileObject") + If (Me.ObjectIdField.Equals(value) <> true) Then + Me.ObjectIdField = value + Me.RaisePropertyChanged("ObjectId") End If End Set End Property @@ -547,10 +579,10 @@ Namespace EDMIServiceReference _ - Partial Public Class CheckInOutFileResponse + Partial Public Class Globix_ImportFileResponse Inherits EDMIServiceReference.BaseResponse _ @@ -2012,150 +2044,6 @@ Namespace EDMIServiceReference End Sub End Class - _ - Partial Public Class ImportFileRequest - Inherits Object - Implements System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged - - _ - Private extensionDataField As System.Runtime.Serialization.ExtensionDataObject - - _ - Private AttributeValuesField() As EDMIServiceReference.UserAttributeValue - - _ - Private FileField As EDMIServiceReference.FileProperties - - _ - Private IDBDoctypeIdField As String - - _ - Private KindTypeField As String - - _ - Private ProfileIdField As Integer - - _ - Private StoreNameField As String - - _ - Private UserField As EDMIServiceReference.UserState - - _ - Public Property ExtensionData() As System.Runtime.Serialization.ExtensionDataObject Implements System.Runtime.Serialization.IExtensibleDataObject.ExtensionData - Get - Return Me.extensionDataField - End Get - Set - Me.extensionDataField = value - End Set - End Property - - _ - Public Property AttributeValues() As EDMIServiceReference.UserAttributeValue() - Get - Return Me.AttributeValuesField - End Get - Set - If (Object.ReferenceEquals(Me.AttributeValuesField, value) <> true) Then - Me.AttributeValuesField = value - Me.RaisePropertyChanged("AttributeValues") - End If - End Set - End Property - - _ - Public Property File() As EDMIServiceReference.FileProperties - Get - Return Me.FileField - End Get - Set - If (Object.ReferenceEquals(Me.FileField, value) <> true) Then - Me.FileField = value - Me.RaisePropertyChanged("File") - End If - End Set - End Property - - _ - Public Property IDBDoctypeId() As String - Get - Return Me.IDBDoctypeIdField - End Get - Set - If (Object.ReferenceEquals(Me.IDBDoctypeIdField, value) <> true) Then - Me.IDBDoctypeIdField = value - Me.RaisePropertyChanged("IDBDoctypeId") - End If - End Set - End Property - - _ - Public Property KindType() As String - Get - Return Me.KindTypeField - End Get - Set - If (Object.ReferenceEquals(Me.KindTypeField, value) <> true) Then - Me.KindTypeField = value - Me.RaisePropertyChanged("KindType") - End If - End Set - End Property - - _ - Public Property ProfileId() As Integer - Get - Return Me.ProfileIdField - End Get - Set - If (Me.ProfileIdField.Equals(value) <> true) Then - Me.ProfileIdField = value - Me.RaisePropertyChanged("ProfileId") - End If - End Set - End Property - - _ - Public Property StoreName() As String - Get - Return Me.StoreNameField - End Get - Set - If (Object.ReferenceEquals(Me.StoreNameField, value) <> true) Then - Me.StoreNameField = value - Me.RaisePropertyChanged("StoreName") - End If - End Set - End Property - - _ - Public Property User() As EDMIServiceReference.UserState - Get - Return Me.UserField - End Get - Set - If (Object.ReferenceEquals(Me.UserField, value) <> true) Then - Me.UserField = value - Me.RaisePropertyChanged("User") - End If - End Set - End Property - - Public Event PropertyChanged As System.ComponentModel.PropertyChangedEventHandler Implements System.ComponentModel.INotifyPropertyChanged.PropertyChanged - - Protected Sub RaisePropertyChanged(ByVal propertyName As String) - Dim propertyChanged As System.ComponentModel.PropertyChangedEventHandler = Me.PropertyChangedEvent - If (Not (propertyChanged) Is Nothing) Then - propertyChanged(Me, New System.ComponentModel.PropertyChangedEventArgs(propertyName)) - End If - End Sub - End Class - _ Private ActionField As EDMIServiceReference.CheckInOutFileAction - - + + _ Private CommentField As String - - + + _ Private ObjectIdField As Long - - + + _ Private UserField As EDMIServiceReference.UserState - - + + _ Public Property ExtensionData() As System.Runtime.Serialization.ExtensionDataObject Implements System.Runtime.Serialization.IExtensibleDataObject.ExtensionData Get Return Me.extensionDataField End Get Set - Me.extensionDataField = Value + Me.extensionDataField = value End Set End Property - - + + _ Public Property Action() As EDMIServiceReference.CheckInOutFileAction Get Return Me.ActionField End Get Set - If (Me.ActionField.Equals(Value) <> True) Then - Me.ActionField = Value + If (Me.ActionField.Equals(value) <> true) Then + Me.ActionField = value Me.RaisePropertyChanged("Action") End If End Set End Property - - + + _ Public Property Comment() As String Get Return Me.CommentField End Get Set - If (Object.ReferenceEquals(Me.CommentField, Value) <> True) Then - Me.CommentField = Value + If (Object.ReferenceEquals(Me.CommentField, value) <> true) Then + Me.CommentField = value Me.RaisePropertyChanged("Comment") End If End Set @@ -2465,23 +2353,311 @@ Namespace EDMIServiceReference CheckOut = 1 End Enum - _ - Public Enum RightsAccessRight As Integer + _ + Partial Public Class ImportFileRequest + Inherits Object + Implements System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged - _ - VIEW_ONLY = 1 + _ + Private extensionDataField As System.Runtime.Serialization.ExtensionDataObject - _ - VIEW_EXPORT = 2 + _ + Private AttributeValuesField() As EDMIServiceReference.UserAttributeValue - _ - FULL = 4 - End Enum - - _ - Public Interface IEDMIService + _ + Private FileField As EDMIServiceReference.FileProperties + + _ + Private IDBDoctypeIdField As String + + _ + Private KindTypeField As String + + _ + Private ProfileIdField As Integer + + _ + Private StoreNameField As String + + _ + Private UserField As EDMIServiceReference.UserState + + _ + Public Property ExtensionData() As System.Runtime.Serialization.ExtensionDataObject Implements System.Runtime.Serialization.IExtensibleDataObject.ExtensionData + Get + Return Me.extensionDataField + End Get + Set + Me.extensionDataField = value + End Set + End Property + + _ + Public Property AttributeValues() As EDMIServiceReference.UserAttributeValue() + Get + Return Me.AttributeValuesField + End Get + Set + If (Object.ReferenceEquals(Me.AttributeValuesField, value) <> true) Then + Me.AttributeValuesField = value + Me.RaisePropertyChanged("AttributeValues") + End If + End Set + End Property + + _ + Public Property File() As EDMIServiceReference.FileProperties + Get + Return Me.FileField + End Get + Set + If (Object.ReferenceEquals(Me.FileField, value) <> true) Then + Me.FileField = value + Me.RaisePropertyChanged("File") + End If + End Set + End Property + + _ + Public Property IDBDoctypeId() As String + Get + Return Me.IDBDoctypeIdField + End Get + Set + If (Object.ReferenceEquals(Me.IDBDoctypeIdField, value) <> true) Then + Me.IDBDoctypeIdField = value + Me.RaisePropertyChanged("IDBDoctypeId") + End If + End Set + End Property + + _ + Public Property KindType() As String + Get + Return Me.KindTypeField + End Get + Set + If (Object.ReferenceEquals(Me.KindTypeField, value) <> true) Then + Me.KindTypeField = value + Me.RaisePropertyChanged("KindType") + End If + End Set + End Property + + _ + Public Property ProfileId() As Integer + Get + Return Me.ProfileIdField + End Get + Set + If (Me.ProfileIdField.Equals(value) <> true) Then + Me.ProfileIdField = value + Me.RaisePropertyChanged("ProfileId") + End If + End Set + End Property + + _ + Public Property StoreName() As String + Get + Return Me.StoreNameField + End Get + Set + If (Object.ReferenceEquals(Me.StoreNameField, value) <> true) Then + Me.StoreNameField = value + Me.RaisePropertyChanged("StoreName") + End If + End Set + End Property + + _ + Public Property User() As EDMIServiceReference.UserState + Get + Return Me.UserField + End Get + Set + If (Object.ReferenceEquals(Me.UserField, value) <> true) Then + Me.UserField = value + Me.RaisePropertyChanged("User") + End If + End Set + End Property + + Public Event PropertyChanged As System.ComponentModel.PropertyChangedEventHandler Implements System.ComponentModel.INotifyPropertyChanged.PropertyChanged + + Protected Sub RaisePropertyChanged(ByVal propertyName As String) + Dim propertyChanged As System.ComponentModel.PropertyChangedEventHandler = Me.PropertyChangedEvent + If (Not (propertyChanged) Is Nothing) Then + propertyChanged(Me, New System.ComponentModel.PropertyChangedEventArgs(propertyName)) + End If + End Sub + End Class + + _ + Partial Public Class Globix_ImportFileRequest + Inherits Object + Implements System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged + + _ + Private extensionDataField As System.Runtime.Serialization.ExtensionDataObject + + _ + Private AttributeValuesField() As EDMIServiceReference.UserAttributeValue + + _ + Private FileField As EDMIServiceReference.FileProperties + + _ + Private IDBDoctypeIdField As String + + _ + Private KindTypeField As String + + _ + Private ProfileIdField As Integer + + _ + Private StoreNameField As String + + _ + Private UserField As EDMIServiceReference.UserState + + _ + Public Property ExtensionData() As System.Runtime.Serialization.ExtensionDataObject Implements System.Runtime.Serialization.IExtensibleDataObject.ExtensionData + Get + Return Me.extensionDataField + End Get + Set + Me.extensionDataField = value + End Set + End Property + + _ + Public Property AttributeValues() As EDMIServiceReference.UserAttributeValue() + Get + Return Me.AttributeValuesField + End Get + Set + If (Object.ReferenceEquals(Me.AttributeValuesField, value) <> true) Then + Me.AttributeValuesField = value + Me.RaisePropertyChanged("AttributeValues") + End If + End Set + End Property + + _ + Public Property File() As EDMIServiceReference.FileProperties + Get + Return Me.FileField + End Get + Set + If (Object.ReferenceEquals(Me.FileField, value) <> true) Then + Me.FileField = value + Me.RaisePropertyChanged("File") + End If + End Set + End Property + + _ + Public Property IDBDoctypeId() As String + Get + Return Me.IDBDoctypeIdField + End Get + Set + If (Object.ReferenceEquals(Me.IDBDoctypeIdField, value) <> true) Then + Me.IDBDoctypeIdField = value + Me.RaisePropertyChanged("IDBDoctypeId") + End If + End Set + End Property + + _ + Public Property KindType() As String + Get + Return Me.KindTypeField + End Get + Set + If (Object.ReferenceEquals(Me.KindTypeField, value) <> true) Then + Me.KindTypeField = value + Me.RaisePropertyChanged("KindType") + End If + End Set + End Property + + _ + Public Property ProfileId() As Integer + Get + Return Me.ProfileIdField + End Get + Set + If (Me.ProfileIdField.Equals(value) <> true) Then + Me.ProfileIdField = value + Me.RaisePropertyChanged("ProfileId") + End If + End Set + End Property + + _ + Public Property StoreName() As String + Get + Return Me.StoreNameField + End Get + Set + If (Object.ReferenceEquals(Me.StoreNameField, value) <> true) Then + Me.StoreNameField = value + Me.RaisePropertyChanged("StoreName") + End If + End Set + End Property + + _ + Public Property User() As EDMIServiceReference.UserState + Get + Return Me.UserField + End Get + Set + If (Object.ReferenceEquals(Me.UserField, value) <> true) Then + Me.UserField = value + Me.RaisePropertyChanged("User") + End If + End Set + End Property + + Public Event PropertyChanged As System.ComponentModel.PropertyChangedEventHandler Implements System.ComponentModel.INotifyPropertyChanged.PropertyChanged + + Protected Sub RaisePropertyChanged(ByVal propertyName As String) + Dim propertyChanged As System.ComponentModel.PropertyChangedEventHandler = Me.PropertyChangedEvent + If (Not (propertyChanged) Is Nothing) Then + propertyChanged(Me, New System.ComponentModel.PropertyChangedEventArgs(propertyName)) + End If + End Sub + End Class + + _ + Public Enum RightsAccessRight As Integer + + _ + VIEW_ONLY = 1 + + _ + VIEW_EXPORT = 2 + + _ + FULL = 4 + End Enum + + _ + Public Interface IEDMIService _ Function Heartbeat() As Boolean @@ -2656,12 +2832,6 @@ Namespace EDMIServiceReference _ Function GetAttributeValueAsync(ByVal Data As EDMIServiceReference.GetAttributeValueRequest) As System.Threading.Tasks.Task(Of EDMIServiceReference.GetAttributeValueResponse) - _ - Function ImportFile(ByVal Data As EDMIServiceReference.ImportFileRequest) As EDMIServiceReference.ImportFileResponse - - _ - Function ImportFileAsync(ByVal Data As EDMIServiceReference.ImportFileRequest) As System.Threading.Tasks.Task(Of EDMIServiceReference.ImportFileResponse) - _ Function GetFileObject(ByVal Data As EDMIServiceReference.GetFileObjectRequest) As EDMIServiceReference.GetFileObjectResponse @@ -2674,6 +2844,18 @@ Namespace EDMIServiceReference _ Function CheckInOutFileAsync(ByVal Data As EDMIServiceReference.CheckInOutFileRequest) As System.Threading.Tasks.Task(Of EDMIServiceReference.CheckInOutFileResponse) + _ + Function ImportFile(ByVal Data As EDMIServiceReference.ImportFileRequest) As EDMIServiceReference.ImportFileResponse + + _ + Function ImportFileAsync(ByVal Data As EDMIServiceReference.ImportFileRequest) As System.Threading.Tasks.Task(Of EDMIServiceReference.ImportFileResponse) + + _ + Function Globix_ImportFile(ByVal Data As EDMIServiceReference.Globix_ImportFileRequest) As EDMIServiceReference.Globix_ImportFileResponse + + _ + Function Globix_ImportFileAsync(ByVal Data As EDMIServiceReference.Globix_ImportFileRequest) As System.Threading.Tasks.Task(Of EDMIServiceReference.Globix_ImportFileResponse) + 'CODEGEN: Der Nachrichtenvertrag wird generiert, da der Wrappername (DocumentStreamRequest) von Nachricht "DocumentStreamRequest" nicht mit dem Standardwert (GetFileByObjectId) übereinstimmt. _ Function EDMIServiceReference_IEDMIService_GetFileByObjectId(ByVal request As EDMIServiceReference.DocumentStreamRequest) As EDMIServiceReference.DocumentStreamResponse Implements EDMIServiceReference.IEDMIService.GetFileByObjectId Return MyBase.Channel.GetFileByObjectId(request) diff --git a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/service.wsdl b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/service.wsdl index d81cb177..a8ce2f52 100644 --- a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/service.wsdl +++ b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/service.wsdl @@ -254,8 +254,8 @@ - - + + @@ -263,8 +263,8 @@ - - + + @@ -272,8 +272,17 @@ - - + + + + + + + + + + + diff --git a/Modules.EDMIAPI/EDMI.API.vbproj b/Modules.EDMIAPI/EDMI.API.vbproj index 00829f3f..45eebcc2 100644 --- a/Modules.EDMIAPI/EDMI.API.vbproj +++ b/Modules.EDMIAPI/EDMI.API.vbproj @@ -81,6 +81,7 @@ + @@ -153,6 +154,9 @@ Reference.svcmap + + Reference.svcmap + Reference.svcmap @@ -219,6 +223,9 @@ Designer + + Designer + Designer diff --git a/Modules.EDMIAPI/Modules/Globix/ImportFile.vb b/Modules.EDMIAPI/Modules/Globix/ImportFile.vb index 74fe6529..1af79d5c 100644 --- a/Modules.EDMIAPI/Modules/Globix/ImportFile.vb +++ b/Modules.EDMIAPI/Modules/Globix/ImportFile.vb @@ -5,11 +5,9 @@ Imports DigitalData.Modules.Logging Namespace Modules.Globix Public Class ImportFile Inherits BaseMethod - Private ReadOnly FileEx As Filesystem.File Public Sub New(pLogConfig As LogConfig, pChannel As IEDMIServiceChannel) MyBase.New(pLogConfig, pChannel) - FileEx = New Filesystem.File(pLogConfig) End Sub Public Async Function RunAsync(pFilePath As String, @@ -18,7 +16,7 @@ Namespace Modules.Globix pObjectStoreName As String, pObjectKind As String, pIDBDoctypeId As Long, - pImportOptions As Options.ImportFileOptions) As Task(Of ImportFileResponse) + pImportOptions As Options.ImportFileOptions) As Task(Of Globix_ImportFileResponse) Try ' Set default options If pImportOptions Is Nothing Then @@ -44,7 +42,7 @@ Namespace Modules.Globix oFileStream.CopyTo(oMemoryStream) Dim oContents = oMemoryStream.ToArray() - Dim oFileImportResponse = Await Channel.ImportFileAsync(New ImportFileRequest With { + Dim oFileImportResponse = Await Channel.Globix_ImportFileAsync(New Globix_ImportFileRequest With { .IDBDoctypeId = pIDBDoctypeId, .File = New FileProperties With { .FileName = oFileInfo.Name, diff --git a/Modules.EDMIAPI/Modules/IDB/ImportFile.vb b/Modules.EDMIAPI/Modules/IDB/ImportFile.vb new file mode 100644 index 00000000..60921fe0 --- /dev/null +++ b/Modules.EDMIAPI/Modules/IDB/ImportFile.vb @@ -0,0 +1,75 @@ +Imports System.IO +Imports DigitalData.Modules.EDMI.API.EDMIServiceReference +Imports DigitalData.Modules.Logging + +Namespace Modules.IDB + Public Class ImportFile + Inherits BaseMethod + + Public Sub New(pLogConfig As LogConfig, pChannel As IEDMIServiceChannel) + MyBase.New(pLogConfig, pChannel) + End Sub + + Public Async Function RunAsync(pFilePath As String, + pAttributeValues As List(Of UserAttributeValue), + pObjectStoreName As String, + pObjectKind As String, + pIDBDoctypeId As Long, + pImportOptions As Options.ImportFileOptions) As Task(Of ImportFileResponse) + Try + ' Set default options + If pImportOptions Is Nothing Then + pImportOptions = New Options.ImportFileOptions() + End If + + ' Check if file exists + If File.Exists(pFilePath) = False Then + Throw New FileNotFoundException("Path does not exist") + End If + + Dim oFileInfo As New FileInfo(pFilePath) + Dim oExtension As String = oFileInfo.Extension + + Dim oFileName As String = oFileInfo.Name + Dim oFileCreatedAt As Date = oFileInfo?.CreationTime + Dim oFileModifiedAt As Date = oFileInfo?.LastWriteTime + Dim oFileHash As String = FileEx.GetChecksum(oFileInfo.FullName) + + ' Importing the file now + Using oFileStream As New FileStream(pFilePath, FileMode.Open, FileAccess.Read) + Using oMemoryStream As New MemoryStream() + oFileStream.CopyTo(oMemoryStream) + Dim oContents = oMemoryStream.ToArray() + + Dim oFileImportResponse = Await Channel.ImportFileAsync(New ImportFileRequest With { + .IDBDoctypeId = pIDBDoctypeId, + .File = New FileProperties With { + .FileName = oFileInfo.Name, + .FileCreatedAt = oFileCreatedAt, + .FileChangedAt = oFileModifiedAt, + .FileContents = oContents, + .FileImportedAt = pImportOptions.DateImported, + .FileChecksum = oFileHash, + .FileInfoRaw = oFileInfo + }, + .KindType = pObjectKind, + .StoreName = pObjectStoreName, + .User = New UserState() With { + .UserName = pImportOptions.Username, + .Language = pImportOptions.Language + }, + .ProfileId = -1, + .AttributeValues = pAttributeValues.ToArray + }) + + Return oFileImportResponse + End Using + End Using + Catch ex As Exception + Logger.Error(ex) + Return Nothing + End Try + End Function + End Class +End Namespace + diff --git a/Service.EDMIService/EDMIService.vb b/Service.EDMIService/EDMIService.vb index 73383f18..9087d99f 100644 --- a/Service.EDMIService/EDMIService.vb +++ b/Service.EDMIService/EDMIService.vb @@ -97,12 +97,6 @@ Public Class EDMIService Return oGetAttributeValue.Run(Data) End Function - Public Function ImportFile(pData As GlobalIndexer.ImportFile.ImportFileRequest) As GlobalIndexer.ImportFile.ImportFileResponse Implements IEDMIService.ImportFile - _Logger.Debug("Start of Method [ImportFile]") - Dim oImportFile As New GlobalIndexer.ImportFile.ImportFileMethod(LogConfig, MSSQL_IDB, MSSQL_ECM, GlobalState) - Return oImportFile.Run(pData) - End Function - Public Function GetFileObject(pData As GetFileObject.GetFileObjectRequest) As GetFileObject.GetFileObjectResponse Implements IEDMIService.GetFileObject _Logger.Debug("Start of Method [GetFileObject]") Dim oGetFileObject As New GetFileObject.GetFileObjectMethod(LogConfig, MSSQL_IDB, MSSQL_ECM, GlobalState) @@ -115,6 +109,18 @@ Public Class EDMIService Return oCheckInOutFile.Run(pData) End Function + Public Function ImportFile(pData As ImportFile.ImportFileRequest) As ImportFile.ImportFileResponse Implements IEDMIService.ImportFile + _Logger.Debug("Start of Method [ImportFile]") + Dim oImportFile As New ImportFile.ImportFileMethod(LogConfig, MSSQL_IDB, MSSQL_ECM, GlobalState) + Return oImportFile.Run(pData) + End Function + + Public Function Globix_ImportFile(pData As GlobalIndexer.ImportFile.Globix_ImportFileRequest) As GlobalIndexer.ImportFile.Globix_ImportFileResponse Implements IEDMIService.Globix_ImportFile + _Logger.Debug("Start of Method [Globix_ImportFile]") + Dim oImportFile As New GlobalIndexer.ImportFile.ImportFileMethod(LogConfig, MSSQL_IDB, MSSQL_ECM, GlobalState) + Return oImportFile.Run(pData) + End Function + #Region "=== Database ===" Public Function GetCachedTables() As List(Of String) Implements IEDMIService.GetCachedTables diff --git a/Service.EDMIService/EDMIService.vbproj b/Service.EDMIService/EDMIService.vbproj index 07993a73..477ac40b 100644 --- a/Service.EDMIService/EDMIService.vbproj +++ b/Service.EDMIService/EDMIService.vbproj @@ -131,7 +131,6 @@ - @@ -174,6 +173,9 @@ + + + diff --git a/Service.EDMIService/IDB/Helpers.vb b/Service.EDMIService/IDB/Helpers.vb index d6a7e3ca..d4a0fc31 100644 --- a/Service.EDMIService/IDB/Helpers.vb +++ b/Service.EDMIService/IDB/Helpers.vb @@ -148,56 +148,7 @@ Namespace IDB Return oFinalPath End Function - Public Function GetObject(pObjectId As Long) As IDBObject - Try - Dim oGetObjectSQL = $"SELECT * FROM VWIDB_OBJECT WHERE IDB_OBJ_ID = {pObjectId}" - Dim oRow As DataTable = Database.GetDatatable(oGetObjectSQL) - - If oRow Is Nothing Then - Logger.Warn("Object with Id [{0}] not found.", pObjectId) - Return Nothing - - End If - - 'TODO: Return object data - - Catch ex As Exception - Logger.Error(ex) - Return Nothing - End Try - End Function - - 'Public Function GetAttributesForObject(pObjectId As Long, pLanguage As String) As List(Of ObjectAttribute) - ' Dim oAttributes As New List(Of ObjectAttribute) - - ' Try - ' Dim oTable As DataTable = Database.GetDatatable($"EXEC [PRIDB_GET_VALUE_DT] {pObjectId}, '{pLanguage}'") - ' If oTable Is Nothing OrElse oTable.Rows.Count = 0 Then - ' Return Nothing - ' End If - - ' For Each oRow As DataRow In oTable.Rows - ' Dim oAttribute As New ObjectAttribute With { - ' .Id = oRow.Item("AttributeId"), - ' .Title = oRow.Item("AttributeTitle"), - ' .Type = oRow.Item("AttributeType"), - ' .ValueBigInt = Utils.NotNull(oRow.Item("ValueBigInt"), Nothing), - ' .ValueDate = Utils.NotNull(oRow.Item("ValueDate"), Nothing), - ' .ValueDecimal = Utils.NotNull(oRow.Item("ValueDecimal"), Nothing), - ' .ValueText = Utils.NotNull(oRow.Item("ValueText"), Nothing) - ' } - - ' oAttributes.Add(oAttribute) - ' Next - - ' Return oAttributes - ' Catch ex As Exception - ' Logger.Error(ex) - ' Return Nothing - ' End Try - 'End Function - - Public Function SetAttributeValue(pConnection As SqlConnection, pTransaction As SqlTransaction, pObjectId As Long, pAttributeName As String, pValue As String, pLanguage As String, pWho As String) As Boolean + Public Function SetAttributeValueWithTransaction(pConnection As SqlConnection, pTransaction As SqlTransaction, pObjectId As Long, pAttributeName As String, pValue As String, pLanguage As String, pWho As String) As Boolean Logger.Info("Setting value of Attribute [{0}]", pAttributeName) Dim oSql = $" DECLARE @NEW_OBJ_MD_ID BIGINT @@ -210,6 +161,31 @@ Namespace IDB Return True End Function + + Public Sub SetAttributeValuesWithTransaction(pConnection As SqlConnection, pTransaction As SqlTransaction, pObjectId As Long, pAttributes As Dictionary(Of String, List(Of String)), pLanguage As String, pWho As String) + For Each oAttribute As KeyValuePair(Of String, List(Of String)) In pAttributes + Try + ' TODO: This works only for simple attributes for now!!! + Dim oValue = oAttribute.Value.FirstOrDefault() + + ' Dont write empty attributes + If oValue Is Nothing Then + Continue For + End If + + ' Now make the call to the database + Dim oSuccess = SetAttributeValueWithTransaction(pConnection, pTransaction, pObjectId, oAttribute.Key, oValue, pLanguage, pWho) + If oSuccess Then + Logger.Info("Attribute written [{0}] => [{1}]", oAttribute.Key, oAttribute.Value.First()) + Else + Logger.Warn("Attribute value could not be written") + End If + Catch ex As Exception + LogAndThrow(ex, $"Attribute [{oAttribute.Key}] could not be written!") + End Try + Next + End Sub + Public Function NewDynamicFolderForObject(pObjectId As Long, pFolder As String, pWho As String, pLangCode As String) As Boolean Logger.Info("Setting Dynamic Folder [{0}]", pFolder) Dim oSql = $" diff --git a/Service.EDMIService/IDB/IDBObject.vb b/Service.EDMIService/IDB/IDBObject.vb deleted file mode 100644 index ba79a508..00000000 --- a/Service.EDMIService/IDB/IDBObject.vb +++ /dev/null @@ -1,7 +0,0 @@ -Namespace IDB - Public Class IDBObject - Public Property ObjectId As Long - Public Property ObjectKind As Long - Public Property BusinessEntity As Long - End Class -End Namespace \ No newline at end of file diff --git a/Service.EDMIService/IEDMIService.vb b/Service.EDMIService/IEDMIService.vb index d6a50d02..c75fbec9 100644 --- a/Service.EDMIService/IEDMIService.vb +++ b/Service.EDMIService/IEDMIService.vb @@ -79,7 +79,7 @@ Interface IEDMIService Function ExecuteNonQuery_MSSQL_ECM(SQL As String) As NonQueryResult #End Region -#Region "Document (New)" +#Region "Document IDB" Function NewFile(Data As NewFile.NewFileRequest) As NewFile.NewFileResponse @@ -92,14 +92,19 @@ Interface IEDMIService Function GetAttributeValue(Data As GetAttributeValue.GetAttributeValueRequest) As GetAttributeValue.GetAttributeValueResponse - - Function ImportFile(Data As GlobalIndexer.ImportFile.ImportFileRequest) As GlobalIndexer.ImportFile.ImportFileResponse - Function GetFileObject(Data As GetFileObject.GetFileObjectRequest) As GetFileObject.GetFileObjectResponse Function CheckInOutFile(Data As CheckInOutFile.CheckInOutFileRequest) As CheckInOutFile.CheckInOutFileResponse + + + Function ImportFile(Data As ImportFile.ImportFileRequest) As ImportFile.ImportFileResponse +#End Region + +#Region "Document Globix" + + Function Globix_ImportFile(Data As GlobalIndexer.ImportFile.Globix_ImportFileRequest) As GlobalIndexer.ImportFile.Globix_ImportFileResponse #End Region #Region "Document (Old)" diff --git a/Service.EDMIService/Methods/GlobalIndexer/ImportFile/ImportFileMethod.vb b/Service.EDMIService/Methods/GlobalIndexer/ImportFile/ImportFileMethod.vb index 47702e47..a93e4593 100644 --- a/Service.EDMIService/Methods/GlobalIndexer/ImportFile/ImportFileMethod.vb +++ b/Service.EDMIService/Methods/GlobalIndexer/ImportFile/ImportFileMethod.vb @@ -37,7 +37,7 @@ Namespace Methods.GlobalIndexer.ImportFile ''' ''' ''' - Public Function Run(pData As ImportFileRequest) + Public Function Run(pData As Globix_ImportFileRequest) Try User = pData.User @@ -99,14 +99,14 @@ Namespace Methods.GlobalIndexer.ImportFile ToDictionary(Function(kv) kv.Key, Function(kv) kv.Value) Logger.Info("Writing [{0}] Attributes for ObjectId [{0}] ", oResponse.ObjectId) - WriteAttributeValues(oResponse.ObjectId, oFinalAttributes) + Helpers.SetAttributeValuesWithTransaction(Connection, Transaction, oResponse.ObjectId, oFinalAttributes, User.Language, User.UserName) 'TODO: Write to TBGI_INDEX_HISTORY? ' Finally, commit the transaction Transaction?.Commit() - Return New ImportFileResponse(oResponse.ObjectId) + Return New Globix_ImportFileResponse(oResponse.ObjectId) Catch ex As Exception Logger.Warn("Error occurred while importing file!") @@ -115,7 +115,7 @@ Namespace Methods.GlobalIndexer.ImportFile Logger.Info("Rolling back transaction.") Transaction?.Rollback() - Return New ImportFileResponse(ex) + Return New Globix_ImportFileResponse(ex) End Try End Function @@ -154,30 +154,6 @@ Namespace Methods.GlobalIndexer.ImportFile Return oFileName & pFileInfo.Extension End Function - - Private Sub WriteAttributeValues(pObjectId As Long, pAttributes As Dictionary(Of String, List(Of String))) - For Each oAttribute As KeyValuePair(Of String, List(Of String)) In pAttributes - Try - ' TODO: This works only for simple attributes for now!!! - Dim oValue = oAttribute.Value.FirstOrDefault() - - ' Dont write empty attributes - If oValue Is Nothing Then - Continue For - End If - - ' Now make the call to the database - Dim oSuccess = Helpers.SetAttributeValue(Connection, Transaction, pObjectId, oAttribute.Key, oValue, User.Language, User.UserName) - If oSuccess Then - Logger.Info("Attribute written [{0}] => [{1}]", oAttribute.Key, oAttribute.Value.First()) - Else - Logger.Warn("Attribute value could not be written") - End If - Catch ex As Exception - LogAndThrow(ex, $"Attribute [{oAttribute.Key}] could not be written!") - End Try - Next - End Sub End Class End Namespace \ No newline at end of file diff --git a/Service.EDMIService/Methods/GlobalIndexer/ImportFile/ImportFileRequest.vb b/Service.EDMIService/Methods/GlobalIndexer/ImportFile/ImportFileRequest.vb index f8a7d756..47eddc81 100644 --- a/Service.EDMIService/Methods/GlobalIndexer/ImportFile/ImportFileRequest.vb +++ b/Service.EDMIService/Methods/GlobalIndexer/ImportFile/ImportFileRequest.vb @@ -5,7 +5,7 @@ Imports DigitalData.Services.EDMIService.Methods.IDB Namespace Methods.GlobalIndexer.ImportFile - Public Class ImportFileRequest + Public Class Globix_ImportFileRequest ''' ''' Important File properties like, Name, Contents, CreatedAt, ModifiedAt, Checksum ''' diff --git a/Service.EDMIService/Methods/GlobalIndexer/ImportFile/ImportFileResponse.vb b/Service.EDMIService/Methods/GlobalIndexer/ImportFile/ImportFileResponse.vb index 6f62fc57..3733961f 100644 --- a/Service.EDMIService/Methods/GlobalIndexer/ImportFile/ImportFileResponse.vb +++ b/Service.EDMIService/Methods/GlobalIndexer/ImportFile/ImportFileResponse.vb @@ -3,7 +3,7 @@ Namespace Methods.GlobalIndexer.ImportFile - Public Class ImportFileResponse + Public Class Globix_ImportFileResponse Inherits Messages.BaseResponse diff --git a/Service.EDMIService/Methods/IDB/ImportFile/ImportFileMethod.vb b/Service.EDMIService/Methods/IDB/ImportFile/ImportFileMethod.vb new file mode 100644 index 00000000..a7ad1344 --- /dev/null +++ b/Service.EDMIService/Methods/IDB/ImportFile/ImportFileMethod.vb @@ -0,0 +1,94 @@ +Imports System.IO +Imports DigitalData.Modules.Database +Imports DigitalData.Modules.Logging +Imports DigitalData.Modules.Patterns +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.IDB.ImportFile + Public Class ImportFileMethod + Inherits BaseMethod + + Private ReadOnly Connection As SqlClient.SqlConnection + Private ReadOnly Transaction As SqlClient.SqlTransaction + + Private User As UserState + + Public Sub New(pLogConfig As LogConfig, pDatabaseIDB As MSSQLServer, pDatabaseECM As MSSQLServer, pGlobalState As GlobalState) + MyBase.New(pLogConfig, pDatabaseIDB, pDatabaseECM, pGlobalState) + + Connection = DatabaseIDB.GetConnection() + Transaction = Connection.BeginTransaction() + End Sub + + ''' + ''' + ''' + ''' + ''' + ''' + ''' + ''' + Public Function Run(pData As ImportFileRequest) + Try + User = pData.User + + ' TODO: Add missing user properties in UserState from TBDD_USER + 'pData.User = ResolveUserFromUserName(pData.User.UserName) + + Dim oUserAttributes = pData.AttributeValues + Dim oAutoAttributes As List(Of UserAttributeValue) = Nothing + + ' Import the file + Dim oNewFile As New NewFile.NewFileMethod(LogConfig, DatabaseIDB, DatabaseECM, GlobalState) + Dim oResponse = oNewFile.Run(New NewFile.NewFileRequest With { + .File = pData.File, + .IDBDoctypeId = pData.IDBDoctypeId, + .KindType = pData.KindType, + .StoreName = pData.StoreName, + .User = User + }) + + If oResponse.OK Then + Logger.Info("Import of file [{0}] under ObjectId [{1}] successful!", pData.File.FileName, oResponse.ObjectId) + Else + Throw New ApplicationException(oResponse.ErrorMessage) + End If + + ' Generate display Filename from nameconvention + Dim oDisplayFilename = "" + + ' Generate virtual path from profile + Dim oDynamicFilePath = "" + + Logger.Info("Collecting Attributes for ObjectId [{0}]", oResponse.ObjectId) + + Dim oFinalAttributes As New Dictionary(Of String, List(Of String)) + oFinalAttributes = Helpers.UserAttributesToDictionary(oUserAttributes) + + Logger.Info("Writing [{0}] Attributes for ObjectId [{0}] ", oResponse.ObjectId) + Helpers.SetAttributeValuesWithTransaction(Connection, Transaction, oResponse.ObjectId, oFinalAttributes, User.Language, User.UserName) + + 'TODO: Write to TBGI_INDEX_HISTORY? + + ' Finally, commit the transaction + Transaction?.Commit() + + Return New ImportFileResponse(oResponse.ObjectId) + + Catch ex As Exception + Logger.Warn("Error occurred while importing file!") + Logger.Error(ex) + + Logger.Info("Rolling back transaction.") + Transaction?.Rollback() + + Return New ImportFileResponse(ex) + End Try + End Function + End Class + +End Namespace \ No newline at end of file diff --git a/Service.EDMIService/Methods/IDB/ImportFile/ImportFileRequest.vb b/Service.EDMIService/Methods/IDB/ImportFile/ImportFileRequest.vb new file mode 100644 index 00000000..8cfbe243 --- /dev/null +++ b/Service.EDMIService/Methods/IDB/ImportFile/ImportFileRequest.vb @@ -0,0 +1,53 @@ +Imports System.Runtime.Serialization +Imports DigitalData.Modules.ZooFlow.State +Imports DigitalData.Services.EDMIService.Methods.IDB + +Namespace Methods.IDB.ImportFile + + + Public Class ImportFileRequest + ''' + ''' Important File properties like, Name, Contents, CreatedAt, ModifiedAt, Checksum + ''' + + Public Property File As FileProperties + + ''' + ''' The ProfileId the file will be imported with + ''' + + Public Property ProfileId As Integer + + ''' + ''' The Document Type of the file, ex. IncomingInvoice + ''' + + Public Property IDBDoctypeId As String + + ''' + ''' The kind of object to be created, ex. DOC + ''' + + Public Property KindType As String + + ''' + ''' Name/title of the ObjectStore to save the file to, ex. Work + ''' + + Public Property StoreName As String + + ''' + ''' The attribute values given by the user in the form of + ''' Attribute Name/Attribute Value/ControlName + ''' + + Public Property AttributeValues As New List(Of UserAttributeValue) + + ''' + ''' User Importing the file + ''' + ''' + + Public Property User As UserState + End Class +End Namespace \ No newline at end of file diff --git a/Service.EDMIService/Methods/IDB/ImportFile/ImportFileResponse.vb b/Service.EDMIService/Methods/IDB/ImportFile/ImportFileResponse.vb new file mode 100644 index 00000000..d20c9f51 --- /dev/null +++ b/Service.EDMIService/Methods/IDB/ImportFile/ImportFileResponse.vb @@ -0,0 +1,22 @@ +Imports System.Runtime.Serialization + +Namespace Methods.IDB.ImportFile + + + Public Class ImportFileResponse + Inherits Messages.BaseResponse + + + Public Property ObjectId As Long + + Public Sub New(pObjectId As Long) + MyBase.New() + ObjectId = pObjectId + End Sub + + Public Sub New(pException As Exception, Optional pDetails As String = "") + MyBase.New(pException, pDetails) + End Sub + End Class + +End Namespace diff --git a/Service.EDMIService/Methods/IDB/NewFile/NewFileMethod.vb b/Service.EDMIService/Methods/IDB/NewFile/NewFileMethod.vb index e7df9f1b..394ff7c9 100644 --- a/Service.EDMIService/Methods/IDB/NewFile/NewFileMethod.vb +++ b/Service.EDMIService/Methods/IDB/NewFile/NewFileMethod.vb @@ -118,7 +118,7 @@ Namespace Methods.IDB.NewFile Continue For End If - Dim oSuccess = Helpers.SetAttributeValue(Connection, Transaction, oObjectId, oAttribute.Key, oAttribute.Value, pData.User.Language, pData.User.UserName) + Dim oSuccess = Helpers.SetAttributeValueWithTransaction(Connection, Transaction, oObjectId, oAttribute.Key, oAttribute.Value, pData.User.Language, pData.User.UserName) If oSuccess Then Logger.Debug("System Attribute [{0}] written with value [{1}]", oAttribute.Key, oAttribute.Value) Else diff --git a/Service.EDMIService/Methods/IDB/SetAttributeValue/SetAttributeValueMethod.vb b/Service.EDMIService/Methods/IDB/SetAttributeValue/SetAttributeValueMethod.vb index 7e372a22..bec40ba6 100644 --- a/Service.EDMIService/Methods/IDB/SetAttributeValue/SetAttributeValueMethod.vb +++ b/Service.EDMIService/Methods/IDB/SetAttributeValue/SetAttributeValueMethod.vb @@ -25,7 +25,7 @@ Namespace Methods.IDB.SetAttributeValue Logger.Debug("Setting value of Attribute [{0}]", pData.AttributeName) - Dim oResult = Helpers.SetAttributeValue(Connection, Transaction, + Dim oResult = Helpers.SetAttributeValueWithTransaction(Connection, Transaction, pData.ObjectId, pData.AttributeName, pData.AttributeValue, pData.Language, pData.Who) If oResult = False Then