diff --git a/GUIs.ClientSuite/_TEST/frmFileTest.Designer.vb b/GUIs.ClientSuite/_TEST/frmFileTest.Designer.vb index 3ac42dc9..c80e2915 100644 --- a/GUIs.ClientSuite/_TEST/frmFileTest.Designer.vb +++ b/GUIs.ClientSuite/_TEST/frmFileTest.Designer.vb @@ -26,13 +26,6 @@ Partial Class frmFileTest Private Sub InitializeComponent() Me.Button1 = New System.Windows.Forms.Button() Me.listboxLog = New System.Windows.Forms.ListBox() - Me.btnDocByDocId = New System.Windows.Forms.Button() - Me.TextBox1 = New System.Windows.Forms.TextBox() - Me.btnDocByContainerId = New System.Windows.Forms.Button() - Me.TextBox2 = New System.Windows.Forms.TextBox() - Me.TextBox3 = New System.Windows.Forms.TextBox() - Me.TextBox4 = New System.Windows.Forms.TextBox() - Me.Button2 = New System.Windows.Forms.Button() Me.SuspendLayout() ' 'Button1 @@ -46,96 +39,26 @@ Partial Class frmFileTest ' 'listboxLog ' - Me.listboxLog.Dock = System.Windows.Forms.DockStyle.Bottom + Me.listboxLog.Dock = System.Windows.Forms.DockStyle.Right Me.listboxLog.FormattingEnabled = True - Me.listboxLog.Location = New System.Drawing.Point(0, 225) + Me.listboxLog.Location = New System.Drawing.Point(165, 0) Me.listboxLog.Name = "listboxLog" - Me.listboxLog.Size = New System.Drawing.Size(800, 225) + Me.listboxLog.Size = New System.Drawing.Size(635, 450) Me.listboxLog.TabIndex = 1 ' - 'btnDocByDocId - ' - Me.btnDocByDocId.Location = New System.Drawing.Point(655, 12) - Me.btnDocByDocId.Name = "btnDocByDocId" - Me.btnDocByDocId.Size = New System.Drawing.Size(133, 32) - Me.btnDocByDocId.TabIndex = 2 - Me.btnDocByDocId.Text = "GetDocByDocId" - Me.btnDocByDocId.UseVisualStyleBackColor = True - ' - 'TextBox1 - ' - Me.TextBox1.Location = New System.Drawing.Point(425, 24) - Me.TextBox1.Name = "TextBox1" - Me.TextBox1.Size = New System.Drawing.Size(224, 20) - Me.TextBox1.TabIndex = 3 - ' - 'btnDocByContainerId - ' - Me.btnDocByContainerId.Location = New System.Drawing.Point(655, 50) - Me.btnDocByContainerId.Name = "btnDocByContainerId" - Me.btnDocByContainerId.Size = New System.Drawing.Size(133, 32) - Me.btnDocByContainerId.TabIndex = 4 - Me.btnDocByContainerId.Text = "GetDocByContainerId" - Me.btnDocByContainerId.UseVisualStyleBackColor = True - ' - 'TextBox2 - ' - Me.TextBox2.Location = New System.Drawing.Point(425, 62) - Me.TextBox2.Name = "TextBox2" - Me.TextBox2.Size = New System.Drawing.Size(224, 20) - Me.TextBox2.TabIndex = 3 - ' - 'TextBox3 - ' - Me.TextBox3.Location = New System.Drawing.Point(425, 138) - Me.TextBox3.Name = "TextBox3" - Me.TextBox3.Size = New System.Drawing.Size(224, 20) - Me.TextBox3.TabIndex = 5 - ' - 'TextBox4 - ' - Me.TextBox4.Location = New System.Drawing.Point(425, 112) - Me.TextBox4.Name = "TextBox4" - Me.TextBox4.Size = New System.Drawing.Size(224, 20) - Me.TextBox4.TabIndex = 5 - ' - 'Button2 - ' - Me.Button2.Location = New System.Drawing.Point(655, 126) - Me.Button2.Name = "Button2" - Me.Button2.Size = New System.Drawing.Size(133, 32) - Me.Button2.TabIndex = 4 - Me.Button2.Text = "GetDocByContainerId" - Me.Button2.UseVisualStyleBackColor = True - ' 'frmFileTest ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font Me.ClientSize = New System.Drawing.Size(800, 450) - Me.Controls.Add(Me.TextBox4) - Me.Controls.Add(Me.TextBox3) - Me.Controls.Add(Me.Button2) - Me.Controls.Add(Me.btnDocByContainerId) - Me.Controls.Add(Me.TextBox2) - Me.Controls.Add(Me.TextBox1) - Me.Controls.Add(Me.btnDocByDocId) Me.Controls.Add(Me.listboxLog) Me.Controls.Add(Me.Button1) Me.Name = "frmFileTest" Me.Text = "frmFileTest" Me.ResumeLayout(False) - Me.PerformLayout() End Sub Friend WithEvents Button1 As Button Friend WithEvents listboxLog As ListBox - Friend WithEvents btnDocByDocId As Button - Friend WithEvents TextBox1 As TextBox - Friend WithEvents btnDocByContainerId As Button - Friend WithEvents TextBox2 As TextBox - Friend WithEvents TextBox3 As TextBox - Friend WithEvents TextBox4 As TextBox - Friend WithEvents Button2 As Button End Class diff --git a/GUIs.ClientSuite/_TEST/frmFileTest.vb b/GUIs.ClientSuite/_TEST/frmFileTest.vb index bf3a90ec..1971fe08 100644 --- a/GUIs.ClientSuite/_TEST/frmFileTest.vb +++ b/GUIs.ClientSuite/_TEST/frmFileTest.vb @@ -1,6 +1,5 @@ Imports System.IO Imports DigitalData.Modules.EDMIAPI -Imports DigitalData.Modules.Filesystem Imports DigitalData.Modules.Logging Public Class frmFileTest @@ -16,7 +15,10 @@ Public Class frmFileTest End Sub Private Async Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click - Dim oDialog = New OpenFileDialog() + Dim oDialog = New OpenFileDialog() With { + .Multiselect = True + } + Dim oDialogResult = oDialog.ShowDialog() If oDialogResult <> DialogResult.OK Then @@ -24,65 +26,71 @@ Public Class frmFileTest End If Try - Dim oResult = Await _fileOp.ImportFileAsync(oDialog.FileName) + For Each oFileName In oDialog.FileNames + Dim oSW As New Stopwatch() + oSW.Start() - If oResult.OK = False Then - MsgBox(oResult.ErrorMessage) - Exit Sub - End If + Dim oResult = Await _fileOp.ImportFile2(oFileName) - listboxLog.Items.Add($"Document uploaded!") - listboxLog.Items.Add($"DocId: {oResult.Document.DocumentId}") - listboxLog.Items.Add($"ContainerId: {oResult.Document.ContainerId}") - listboxLog.Items.Add($"Filename: {oResult.Document.FileName}") - listboxLog.Items.Add($"----------------------------------------------------------") + oSW.Stop() + + If oResult.OK = False Then + MsgBox(oResult.ErrorMessage) + Exit Sub + End If + + listboxLog.Items.Add($"Document uploaded!") + listboxLog.Items.Add($"Filename: {oResult.Document.FileName}") + listboxLog.Items.Add($"Time in milliseconds: {oSW.ElapsedMilliseconds}") + listboxLog.Items.Add($"----------------------------------------------------------") + Next Catch ex As Exception ShowErrorMessage(ex) Logger.Error(ex) End Try End Sub - Private Sub btnDocByDocId_Click(sender As Object, e As EventArgs) Handles btnDocByDocId.Click - Try - Dim oDocId As Int64 = Int64.Parse(TextBox1.Text) - Dim oResult = _fileOp.GetDocumentByDocumentId(oDocId) + 'Private Sub btnDocByDocId_Click(sender As Object, e As EventArgs) + ' Try + ' Dim oDocId As Int64 = Int64.Parse(TextBox1.Text) + ' Dim oResult = _fileOp.GetDocumentByDocumentId(oDocId) - If Not oResult.OK Then - MsgBox(oResult.ErrorMessage) - Exit Sub - End If + ' If Not oResult.OK Then + ' MsgBox(oResult.ErrorMessage) + ' Exit Sub + ' End If - Dim oDocObject = oResult.Document + ' Dim oDocObject = oResult.Document - listboxLog.Items.Add($"Document fetched!") - listboxLog.Items.Add($"DocId: {oDocObject.DocumentId}") - listboxLog.Items.Add($"ContainerId: {oDocObject.ContainerId}") - listboxLog.Items.Add($"Filename: {oDocObject.FileName}") - listboxLog.Items.Add($"----------------------------------------------------------") - Catch ex As Exception - ShowErrorMessage(ex) - End Try - End Sub + ' listboxLog.Items.Add($"Document fetched!") + ' listboxLog.Items.Add($"DocId: {oDocObject.DocumentId}") + ' listboxLog.Items.Add($"ContainerId: {oDocObject.ContainerId}") + ' listboxLog.Items.Add($"Filename: {oDocObject.FileName}") + ' listboxLog.Items.Add($"----------------------------------------------------------") + ' Catch ex As Exception + ' ShowErrorMessage(ex) + ' End Try + 'End Sub - Private Sub btnDocByContainerId_Click(sender As Object, e As EventArgs) Handles btnDocByContainerId.Click, Button2.Click - Try - Dim oContainerId As Int64 = Int64.Parse(TextBox2.Text) - Dim oResult = _fileOp.GetDocumentByContainerId(oContainerId) + 'Private Sub btnDocByContainerId_Click(sender As Object, e As EventArgs) + ' Try + ' Dim oContainerId As Int64 = Int64.Parse(TextBox2.Text) + ' Dim oResult = _fileOp.GetDocumentByContainerId(oContainerId) - If Not oResult.OK Then - MsgBox(oResult.ErrorMessage) - Exit Sub - End If + ' If Not oResult.OK Then + ' MsgBox(oResult.ErrorMessage) + ' Exit Sub + ' End If - Dim oDocObject = oResult.Document + ' Dim oDocObject = oResult.Document - listboxLog.Items.Add($"Document fetched!") - listboxLog.Items.Add($"DocId: {oDocObject.DocumentId}") - listboxLog.Items.Add($"ContainerId: {oDocObject.ContainerId}") - listboxLog.Items.Add($"Filename: {oDocObject.FileName}") - listboxLog.Items.Add($"----------------------------------------------------------") - Catch ex As Exception - ShowErrorMessage(ex) - End Try - End Sub + ' listboxLog.Items.Add($"Document fetched!") + ' listboxLog.Items.Add($"DocId: {oDocObject.DocumentId}") + ' listboxLog.Items.Add($"ContainerId: {oDocObject.ContainerId}") + ' listboxLog.Items.Add($"Filename: {oDocObject.FileName}") + ' listboxLog.Items.Add($"----------------------------------------------------------") + ' Catch ex As Exception + ' ShowErrorMessage(ex) + ' End Try + 'End Sub End Class \ No newline at end of file diff --git a/Modules.EDMIAPI/Channel.vb b/Modules.EDMIAPI/Channel.vb index aa63c9ac..b08d4700 100644 --- a/Modules.EDMIAPI/Channel.vb +++ b/Modules.EDMIAPI/Channel.vb @@ -2,7 +2,7 @@ Imports System.Xml Public Class Channel - Public Shared Function GetBinding() As NetTcpBinding + Public Shared Function GetBinding(Optional AuthenticationMode As TcpClientCredentialType = TcpClientCredentialType.Windows) As NetTcpBinding Return New NetTcpBinding() With { .MaxReceivedMessageSize = Constants.MAX_RECEIVED_MESSAGE_SIZE, .MaxBufferSize = Constants.MAX_BUFFER_SIZE, @@ -11,7 +11,7 @@ Public Class Channel .Security = New NetTcpSecurity() With { .Mode = SecurityMode.Transport, .Transport = New TcpTransportSecurity() With { - .ClientCredentialType = TcpClientCredentialType.Windows + .ClientCredentialType = AuthenticationMode } }, .ReaderQuotas = New XmlDictionaryReaderQuotas() With { diff --git a/Modules.EDMIAPI/Connected Services/IDBServiceReference/DigitalData.Modules.EDMIAPI.IDBServiceReference.DocumentResult2.datasource b/Modules.EDMIAPI/Connected Services/IDBServiceReference/DigitalData.Modules.EDMIAPI.IDBServiceReference.DocumentResult2.datasource new file mode 100644 index 00000000..28e14490 --- /dev/null +++ b/Modules.EDMIAPI/Connected Services/IDBServiceReference/DigitalData.Modules.EDMIAPI.IDBServiceReference.DocumentResult2.datasource @@ -0,0 +1,10 @@ + + + + DigitalData.Modules.EDMIAPI.IDBServiceReference.DocumentResult2, Connected Services.IDBServiceReference.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/IDBServiceReference/DigitalData.Services.IDBService.wsdl b/Modules.EDMIAPI/Connected Services/IDBServiceReference/DigitalData.Services.IDBService.wsdl index ea56398f..e5ab9e5d 100644 --- a/Modules.EDMIAPI/Connected Services/IDBServiceReference/DigitalData.Services.IDBService.wsdl +++ b/Modules.EDMIAPI/Connected Services/IDBServiceReference/DigitalData.Services.IDBService.wsdl @@ -8,6 +8,7 @@ + @@ -70,6 +71,12 @@ + + + + + + @@ -129,6 +136,10 @@ + + + + diff --git a/Modules.EDMIAPI/Connected Services/IDBServiceReference/DigitalData.Services.IDBService.xsd b/Modules.EDMIAPI/Connected Services/IDBServiceReference/DigitalData.Services.IDBService.xsd index e7c74fda..209cb9e7 100644 --- a/Modules.EDMIAPI/Connected Services/IDBServiceReference/DigitalData.Services.IDBService.xsd +++ b/Modules.EDMIAPI/Connected Services/IDBServiceReference/DigitalData.Services.IDBService.xsd @@ -2,6 +2,7 @@ + @@ -139,6 +140,21 @@ + + + + + + + + + + + + + + + @@ -149,7 +165,7 @@ - + @@ -163,14 +179,14 @@ - + - + @@ -180,7 +196,7 @@ - + diff --git a/Modules.EDMIAPI/Connected Services/IDBServiceReference/DigitalData.Services.IDBService1.xsd b/Modules.EDMIAPI/Connected Services/IDBServiceReference/DigitalData.Services.IDBService1.xsd index 424ff5bc..8166c598 100644 --- a/Modules.EDMIAPI/Connected Services/IDBServiceReference/DigitalData.Services.IDBService1.xsd +++ b/Modules.EDMIAPI/Connected Services/IDBServiceReference/DigitalData.Services.IDBService1.xsd @@ -61,6 +61,24 @@ + + + + + + + + + + + + + + + + + + diff --git a/Modules.EDMIAPI/Connected Services/IDBServiceReference/Reference.svcmap b/Modules.EDMIAPI/Connected Services/IDBServiceReference/Reference.svcmap index c1e1ecdb..f757fb08 100644 --- a/Modules.EDMIAPI/Connected Services/IDBServiceReference/Reference.svcmap +++ b/Modules.EDMIAPI/Connected Services/IDBServiceReference/Reference.svcmap @@ -1,5 +1,5 @@ - + false true @@ -19,17 +19,18 @@ - + - - - - - - - - + + + + + + + + + diff --git a/Modules.EDMIAPI/Connected Services/IDBServiceReference/Reference.vb b/Modules.EDMIAPI/Connected Services/IDBServiceReference/Reference.vb index 4b4be068..8692d353 100644 --- a/Modules.EDMIAPI/Connected Services/IDBServiceReference/Reference.vb +++ b/Modules.EDMIAPI/Connected Services/IDBServiceReference/Reference.vb @@ -15,67 +15,68 @@ Imports System Imports System.Runtime.Serialization Namespace IDBServiceReference - - + + _ Partial Public Class BaseResult Inherits Object Implements System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged - - + + _ Private extensionDataField As System.Runtime.Serialization.ExtensionDataObject - - + + _ Private ErrorMessageField As String - - + + _ Private OKField As Boolean - - + + _ 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 ErrorMessage() As String Get Return Me.ErrorMessageField End Get Set - If (Object.ReferenceEquals(Me.ErrorMessageField, Value) <> True) Then - Me.ErrorMessageField = Value + If (Object.ReferenceEquals(Me.ErrorMessageField, value) <> true) Then + Me.ErrorMessageField = value Me.RaisePropertyChanged("ErrorMessage") End If End Set End Property - - + + _ Public Property OK() As Boolean Get Return Me.OKField End Get Set - If (Me.OKField.Equals(Value) <> True) Then - Me.OKField = Value + If (Me.OKField.Equals(value) <> true) Then + Me.OKField = value Me.RaisePropertyChanged("OK") 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 @@ -83,214 +84,317 @@ Namespace IDBServiceReference End If End Sub End Class - - + + _ Partial Public Class ScalarResult Inherits IDBServiceReference.BaseResult - - + + _ Private ScalarField As Object - - + + _ Public Property Scalar() As Object Get Return Me.ScalarField End Get Set - If (Object.ReferenceEquals(Me.ScalarField, Value) <> True) Then - Me.ScalarField = Value + If (Object.ReferenceEquals(Me.ScalarField, value) <> true) Then + Me.ScalarField = value Me.RaisePropertyChanged("Scalar") End If End Set End Property End Class - - + + _ Partial Public Class NonQueryResult Inherits IDBServiceReference.BaseResult End Class - - + + _ Partial Public Class DocumentResult Inherits IDBServiceReference.BaseResult - + Private ContentsField() As Byte - + Private DocumentField As IDBServiceReference.DocumentObject - + Private HasContentsField As Boolean - - + + _ Public Property Contents() As Byte() Get Return Me.ContentsField End Get Set - If (Object.ReferenceEquals(Me.ContentsField, Value) <> True) Then - Me.ContentsField = Value + If (Object.ReferenceEquals(Me.ContentsField, value) <> true) Then + Me.ContentsField = value Me.RaisePropertyChanged("Contents") End If End Set End Property - - + + _ Public Property Document() As IDBServiceReference.DocumentObject Get Return Me.DocumentField End Get Set - If (Object.ReferenceEquals(Me.DocumentField, Value) <> True) Then - Me.DocumentField = Value + If (Object.ReferenceEquals(Me.DocumentField, value) <> true) Then + Me.DocumentField = value Me.RaisePropertyChanged("Document") End If End Set End Property - - + + _ Public Property HasContents() As Boolean Get Return Me.HasContentsField End Get Set - If (Me.HasContentsField.Equals(Value) <> True) Then - Me.HasContentsField = Value + If (Me.HasContentsField.Equals(value) <> true) Then + Me.HasContentsField = value Me.RaisePropertyChanged("HasContents") End If End Set End Property End Class - - + + _ + Partial Public Class DocumentResult2 + Inherits IDBServiceReference.BaseResult + + Private ContentsField() As Byte + + Private DocumentField As IDBServiceReference.DocumentResult2.DocumentObject + + Private HasContentsField As Boolean + + _ + Public Property Contents() As Byte() + Get + Return Me.ContentsField + End Get + Set + If (Object.ReferenceEquals(Me.ContentsField, value) <> true) Then + Me.ContentsField = value + Me.RaisePropertyChanged("Contents") + End If + End Set + End Property + + _ + Public Property Document() As IDBServiceReference.DocumentResult2.DocumentObject + Get + Return Me.DocumentField + End Get + Set + If (Object.ReferenceEquals(Me.DocumentField, value) <> true) Then + Me.DocumentField = value + Me.RaisePropertyChanged("Document") + End If + End Set + End Property + + _ + Public Property HasContents() As Boolean + Get + Return Me.HasContentsField + End Get + Set + If (Me.HasContentsField.Equals(value) <> true) Then + Me.HasContentsField = value + Me.RaisePropertyChanged("HasContents") + End If + End Set + End Property + + _ + Partial Public Class DocumentObject + Inherits Object + Implements System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged + + _ + Private extensionDataField As System.Runtime.Serialization.ExtensionDataObject + + _ + Private FileNameField As String + + 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 FileName() As String + Get + Return Me.FileNameField + End Get + Set + If (Object.ReferenceEquals(Me.FileNameField, value) <> true) Then + Me.FileNameField = value + Me.RaisePropertyChanged("FileName") + 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 + End Class + + _ Partial Public Class IndexResult Inherits IDBServiceReference.BaseResult - + Private IndexIdField As Long - - + + _ Public Property IndexId() As Long Get Return Me.IndexIdField End Get Set - If (Me.IndexIdField.Equals(Value) <> True) Then - Me.IndexIdField = Value + If (Me.IndexIdField.Equals(value) <> true) Then + Me.IndexIdField = value Me.RaisePropertyChanged("IndexId") End If End Set End Property End Class - - + + _ Partial Public Class TableResult Inherits IDBServiceReference.BaseResult - - + + _ Private TableField As System.Data.DataTable - - + + _ Public Property Table() As System.Data.DataTable Get Return Me.TableField End Get Set - If (Object.ReferenceEquals(Me.TableField, Value) <> True) Then - Me.TableField = Value + If (Object.ReferenceEquals(Me.TableField, value) <> true) Then + Me.TableField = value Me.RaisePropertyChanged("Table") End If End Set End Property End Class - - + + _ Partial Public Class DocumentObject Inherits Object Implements System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged - - + + _ Private extensionDataField As System.Runtime.Serialization.ExtensionDataObject - + Private ContainerIdField As String - + Private DocumentIdField As Long - + Private FileNameField As String - - + + _ 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 ContainerId() As String Get Return Me.ContainerIdField End Get Set - If (Object.ReferenceEquals(Me.ContainerIdField, Value) <> True) Then - Me.ContainerIdField = Value + If (Object.ReferenceEquals(Me.ContainerIdField, value) <> true) Then + Me.ContainerIdField = value Me.RaisePropertyChanged("ContainerId") End If End Set End Property - - + + _ Public Property DocumentId() As Long Get Return Me.DocumentIdField End Get Set - If (Me.DocumentIdField.Equals(Value) <> True) Then - Me.DocumentIdField = Value + If (Me.DocumentIdField.Equals(value) <> true) Then + Me.DocumentIdField = value Me.RaisePropertyChanged("DocumentId") End If End Set End Property - - + + _ Public Property FileName() As String Get Return Me.FileNameField End Get Set - If (Object.ReferenceEquals(Me.FileNameField, Value) <> True) Then - Me.FileNameField = Value + If (Object.ReferenceEquals(Me.FileNameField, value) <> true) Then + Me.FileNameField = value Me.RaisePropertyChanged("FileName") 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 @@ -298,225 +402,239 @@ Namespace IDBServiceReference End If End Sub End Class - - + + _ Public Interface IIDBService - - + + _ Function Heartbeat() As Boolean - - + + _ Function HeartbeatAsync() As System.Threading.Tasks.Task(Of Boolean) - - + + _ Function CreateDatabaseRequest(ByVal Name As String, ByVal Debug As Boolean) As String - - + + _ Function CreateDatabaseRequestAsync(ByVal Name As String, ByVal Debug As Boolean) As System.Threading.Tasks.Task(Of String) - - + + _ Sub CloseDatabaseRequest() - - + + _ Function CloseDatabaseRequestAsync() As System.Threading.Tasks.Task - - + + _ Function ReturnDatatable(ByVal SQL As String) As IDBServiceReference.TableResult - - + + _ Function ReturnDatatableAsync(ByVal SQL As String) As System.Threading.Tasks.Task(Of IDBServiceReference.TableResult) - - + + _ Function ReturnScalar(ByVal SQL As String) As IDBServiceReference.ScalarResult - - + + _ Function ReturnScalarAsync(ByVal SQL As String) As System.Threading.Tasks.Task(Of IDBServiceReference.ScalarResult) - - + + _ Function ExecuteNonQuery(ByVal SQL As String) As IDBServiceReference.NonQueryResult - - + + _ Function ExecuteNonQueryAsync(ByVal SQL As String) As System.Threading.Tasks.Task(Of IDBServiceReference.NonQueryResult) - - + + _ Function NewFile(ByVal FileName As String, ByVal Contents() As Byte) As IDBServiceReference.DocumentResult - - + + _ Function NewFileAsync(ByVal FileName As String, ByVal Contents() As Byte) As System.Threading.Tasks.Task(Of IDBServiceReference.DocumentResult) - - + + _ Function UpdateFile(ByVal DocObject As IDBServiceReference.DocumentObject, ByVal Contents() As Byte) As IDBServiceReference.DocumentResult - - + + _ Function UpdateFileAsync(ByVal DocObject As IDBServiceReference.DocumentObject, ByVal Contents() As Byte) As System.Threading.Tasks.Task(Of IDBServiceReference.DocumentResult) - - + + _ Function GetFile(ByVal DocObject As IDBServiceReference.DocumentObject) As IDBServiceReference.DocumentResult - - + + _ Function GetFileAsync(ByVal DocObject As IDBServiceReference.DocumentObject) As System.Threading.Tasks.Task(Of IDBServiceReference.DocumentResult) - - + + _ Function DeleteFile(ByVal DocObject As IDBServiceReference.DocumentObject) As Boolean - - + + _ Function DeleteFileAsync(ByVal DocObject As IDBServiceReference.DocumentObject) As System.Threading.Tasks.Task(Of Boolean) - - + + _ + Function ImportFile(ByVal FileInfo As System.IO.FileInfo, ByVal Contents() As Byte) As IDBServiceReference.DocumentResult2 + + _ + Function ImportFileAsync(ByVal FileInfo As System.IO.FileInfo, ByVal Contents() As Byte) As System.Threading.Tasks.Task(Of IDBServiceReference.DocumentResult2) + + _ Function GetDocumentByDocumentId(ByVal DocumentId As Long) As IDBServiceReference.DocumentResult - - + + _ Function GetDocumentByDocumentIdAsync(ByVal DocumentId As Long) As System.Threading.Tasks.Task(Of IDBServiceReference.DocumentResult) - - + + _ Function GetDocumentByContainerId(ByVal ContainerId As String) As IDBServiceReference.DocumentResult - - + + _ Function GetDocumentByContainerIdAsync(ByVal ContainerId As String) As System.Threading.Tasks.Task(Of IDBServiceReference.DocumentResult) - - + + _ Function NewFileIndex(ByVal DocObject As IDBServiceReference.DocumentObject, ByVal Syskey As String, ByVal LanguageCode As String, ByVal Value As String) As IDBServiceReference.IndexResult - - + + _ Function NewFileIndexAsync(ByVal DocObject As IDBServiceReference.DocumentObject, ByVal Syskey As String, ByVal LanguageCode As String, ByVal Value As String) As System.Threading.Tasks.Task(Of IDBServiceReference.IndexResult) End Interface - - + + _ Public Interface IIDBServiceChannel Inherits IDBServiceReference.IIDBService, System.ServiceModel.IClientChannel End Interface - - + + _ Partial Public Class IDBServiceClient Inherits System.ServiceModel.ClientBase(Of IDBServiceReference.IIDBService) Implements IDBServiceReference.IIDBService - + Public Sub New() MyBase.New End Sub - + Public Sub New(ByVal endpointConfigurationName As String) MyBase.New(endpointConfigurationName) End Sub - + Public Sub New(ByVal endpointConfigurationName As String, ByVal remoteAddress As String) MyBase.New(endpointConfigurationName, remoteAddress) End Sub - + Public Sub New(ByVal endpointConfigurationName As String, ByVal remoteAddress As System.ServiceModel.EndpointAddress) MyBase.New(endpointConfigurationName, remoteAddress) End Sub - + Public Sub New(ByVal binding As System.ServiceModel.Channels.Binding, ByVal remoteAddress As System.ServiceModel.EndpointAddress) MyBase.New(binding, remoteAddress) End Sub - + Public Function Heartbeat() As Boolean Implements IDBServiceReference.IIDBService.Heartbeat Return MyBase.Channel.Heartbeat End Function - + Public Function HeartbeatAsync() As System.Threading.Tasks.Task(Of Boolean) Implements IDBServiceReference.IIDBService.HeartbeatAsync Return MyBase.Channel.HeartbeatAsync End Function - + Public Function CreateDatabaseRequest(ByVal Name As String, ByVal Debug As Boolean) As String Implements IDBServiceReference.IIDBService.CreateDatabaseRequest Return MyBase.Channel.CreateDatabaseRequest(Name, Debug) End Function - + Public Function CreateDatabaseRequestAsync(ByVal Name As String, ByVal Debug As Boolean) As System.Threading.Tasks.Task(Of String) Implements IDBServiceReference.IIDBService.CreateDatabaseRequestAsync Return MyBase.Channel.CreateDatabaseRequestAsync(Name, Debug) End Function - + Public Sub CloseDatabaseRequest() Implements IDBServiceReference.IIDBService.CloseDatabaseRequest - MyBase.Channel.CloseDatabaseRequest() + MyBase.Channel.CloseDatabaseRequest End Sub - + Public Function CloseDatabaseRequestAsync() As System.Threading.Tasks.Task Implements IDBServiceReference.IIDBService.CloseDatabaseRequestAsync Return MyBase.Channel.CloseDatabaseRequestAsync End Function - + Public Function ReturnDatatable(ByVal SQL As String) As IDBServiceReference.TableResult Implements IDBServiceReference.IIDBService.ReturnDatatable Return MyBase.Channel.ReturnDatatable(SQL) End Function - + Public Function ReturnDatatableAsync(ByVal SQL As String) As System.Threading.Tasks.Task(Of IDBServiceReference.TableResult) Implements IDBServiceReference.IIDBService.ReturnDatatableAsync Return MyBase.Channel.ReturnDatatableAsync(SQL) End Function - + Public Function ReturnScalar(ByVal SQL As String) As IDBServiceReference.ScalarResult Implements IDBServiceReference.IIDBService.ReturnScalar Return MyBase.Channel.ReturnScalar(SQL) End Function - + Public Function ReturnScalarAsync(ByVal SQL As String) As System.Threading.Tasks.Task(Of IDBServiceReference.ScalarResult) Implements IDBServiceReference.IIDBService.ReturnScalarAsync Return MyBase.Channel.ReturnScalarAsync(SQL) End Function - + Public Function ExecuteNonQuery(ByVal SQL As String) As IDBServiceReference.NonQueryResult Implements IDBServiceReference.IIDBService.ExecuteNonQuery Return MyBase.Channel.ExecuteNonQuery(SQL) End Function - + Public Function ExecuteNonQueryAsync(ByVal SQL As String) As System.Threading.Tasks.Task(Of IDBServiceReference.NonQueryResult) Implements IDBServiceReference.IIDBService.ExecuteNonQueryAsync Return MyBase.Channel.ExecuteNonQueryAsync(SQL) End Function - + Public Function NewFile(ByVal FileName As String, ByVal Contents() As Byte) As IDBServiceReference.DocumentResult Implements IDBServiceReference.IIDBService.NewFile Return MyBase.Channel.NewFile(FileName, Contents) End Function - + Public Function NewFileAsync(ByVal FileName As String, ByVal Contents() As Byte) As System.Threading.Tasks.Task(Of IDBServiceReference.DocumentResult) Implements IDBServiceReference.IIDBService.NewFileAsync Return MyBase.Channel.NewFileAsync(FileName, Contents) End Function - + Public Function UpdateFile(ByVal DocObject As IDBServiceReference.DocumentObject, ByVal Contents() As Byte) As IDBServiceReference.DocumentResult Implements IDBServiceReference.IIDBService.UpdateFile Return MyBase.Channel.UpdateFile(DocObject, Contents) End Function - + Public Function UpdateFileAsync(ByVal DocObject As IDBServiceReference.DocumentObject, ByVal Contents() As Byte) As System.Threading.Tasks.Task(Of IDBServiceReference.DocumentResult) Implements IDBServiceReference.IIDBService.UpdateFileAsync Return MyBase.Channel.UpdateFileAsync(DocObject, Contents) End Function - + Public Function GetFile(ByVal DocObject As IDBServiceReference.DocumentObject) As IDBServiceReference.DocumentResult Implements IDBServiceReference.IIDBService.GetFile Return MyBase.Channel.GetFile(DocObject) End Function - + Public Function GetFileAsync(ByVal DocObject As IDBServiceReference.DocumentObject) As System.Threading.Tasks.Task(Of IDBServiceReference.DocumentResult) Implements IDBServiceReference.IIDBService.GetFileAsync Return MyBase.Channel.GetFileAsync(DocObject) End Function - + Public Function DeleteFile(ByVal DocObject As IDBServiceReference.DocumentObject) As Boolean Implements IDBServiceReference.IIDBService.DeleteFile Return MyBase.Channel.DeleteFile(DocObject) End Function - + Public Function DeleteFileAsync(ByVal DocObject As IDBServiceReference.DocumentObject) As System.Threading.Tasks.Task(Of Boolean) Implements IDBServiceReference.IIDBService.DeleteFileAsync Return MyBase.Channel.DeleteFileAsync(DocObject) End Function - + + Public Function ImportFile(ByVal FileInfo As System.IO.FileInfo, ByVal Contents() As Byte) As IDBServiceReference.DocumentResult2 Implements IDBServiceReference.IIDBService.ImportFile + Return MyBase.Channel.ImportFile(FileInfo, Contents) + End Function + + Public Function ImportFileAsync(ByVal FileInfo As System.IO.FileInfo, ByVal Contents() As Byte) As System.Threading.Tasks.Task(Of IDBServiceReference.DocumentResult2) Implements IDBServiceReference.IIDBService.ImportFileAsync + Return MyBase.Channel.ImportFileAsync(FileInfo, Contents) + End Function + Public Function GetDocumentByDocumentId(ByVal DocumentId As Long) As IDBServiceReference.DocumentResult Implements IDBServiceReference.IIDBService.GetDocumentByDocumentId Return MyBase.Channel.GetDocumentByDocumentId(DocumentId) End Function - + Public Function GetDocumentByDocumentIdAsync(ByVal DocumentId As Long) As System.Threading.Tasks.Task(Of IDBServiceReference.DocumentResult) Implements IDBServiceReference.IIDBService.GetDocumentByDocumentIdAsync Return MyBase.Channel.GetDocumentByDocumentIdAsync(DocumentId) End Function - + Public Function GetDocumentByContainerId(ByVal ContainerId As String) As IDBServiceReference.DocumentResult Implements IDBServiceReference.IIDBService.GetDocumentByContainerId Return MyBase.Channel.GetDocumentByContainerId(ContainerId) End Function - + Public Function GetDocumentByContainerIdAsync(ByVal ContainerId As String) As System.Threading.Tasks.Task(Of IDBServiceReference.DocumentResult) Implements IDBServiceReference.IIDBService.GetDocumentByContainerIdAsync Return MyBase.Channel.GetDocumentByContainerIdAsync(ContainerId) End Function - + Public Function NewFileIndex(ByVal DocObject As IDBServiceReference.DocumentObject, ByVal Syskey As String, ByVal LanguageCode As String, ByVal Value As String) As IDBServiceReference.IndexResult Implements IDBServiceReference.IIDBService.NewFileIndex Return MyBase.Channel.NewFileIndex(DocObject, Syskey, LanguageCode, Value) End Function - + Public Function NewFileIndexAsync(ByVal DocObject As IDBServiceReference.DocumentObject, ByVal Syskey As String, ByVal LanguageCode As String, ByVal Value As String) As System.Threading.Tasks.Task(Of IDBServiceReference.IndexResult) Implements IDBServiceReference.IIDBService.NewFileIndexAsync Return MyBase.Channel.NewFileIndexAsync(DocObject, Syskey, LanguageCode, Value) End Function diff --git a/Modules.EDMIAPI/Connected Services/IDBServiceReference/System.IO.xsd b/Modules.EDMIAPI/Connected Services/IDBServiceReference/System.IO.xsd new file mode 100644 index 00000000..68a2b9b7 --- /dev/null +++ b/Modules.EDMIAPI/Connected Services/IDBServiceReference/System.IO.xsd @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Modules.EDMIAPI/Connected Services/IDBServiceReference/configuration.svcinfo b/Modules.EDMIAPI/Connected Services/IDBServiceReference/configuration.svcinfo index a6d3d6aa..d435b878 100644 --- a/Modules.EDMIAPI/Connected Services/IDBServiceReference/configuration.svcinfo +++ b/Modules.EDMIAPI/Connected Services/IDBServiceReference/configuration.svcinfo @@ -2,7 +2,7 @@ - + diff --git a/Modules.EDMIAPI/Connected Services/IDBServiceReference/configuration91.svcinfo b/Modules.EDMIAPI/Connected Services/IDBServiceReference/configuration91.svcinfo index 4f58cb92..df824480 100644 --- a/Modules.EDMIAPI/Connected Services/IDBServiceReference/configuration91.svcinfo +++ b/Modules.EDMIAPI/Connected Services/IDBServiceReference/configuration91.svcinfo @@ -1,5 +1,5 @@ - + @@ -105,8 +105,8 @@ (Sammlung) - - Tls, Tls11, Tls12 + + None System.ServiceModel.Configuration.MessageSecurityOverTcpElement diff --git a/Modules.EDMIAPI/Connected Services/IDBServiceReference/service.wsdl b/Modules.EDMIAPI/Connected Services/IDBServiceReference/service.wsdl index 9883cd39..cc11f8c7 100644 --- a/Modules.EDMIAPI/Connected Services/IDBServiceReference/service.wsdl +++ b/Modules.EDMIAPI/Connected Services/IDBServiceReference/service.wsdl @@ -129,6 +129,15 @@ + + + + + + + + + diff --git a/Modules.EDMIAPI/Document.vb b/Modules.EDMIAPI/Document.vb index d3f57042..5f1feb51 100644 --- a/Modules.EDMIAPI/Document.vb +++ b/Modules.EDMIAPI/Document.vb @@ -68,6 +68,26 @@ Public Class Document End Try End Function + ''' + ''' Imports a file by filename + ''' + ''' The filename to import + ''' A document object + Public Async Function ImportFile2(FilePath As String) As Task(Of DocumentResult2) + Try + Dim oContents As Byte() = File.ReadAllBytes(FilePath) + Dim oInfo As New FileInfo(FilePath) + Dim oName As String = oInfo.Name + Dim oExtension As String = oInfo.Extension.Substring(1) + + Dim oResult = Await _channel.ImportFileAsync(oInfo, oContents) + Return oResult + Catch ex As Exception + _logger.Error(ex) + Throw ex + End Try + End Function + ''' ''' Imports a file by filename ''' diff --git a/Modules.EDMIAPI/EDMIAPI.vbproj b/Modules.EDMIAPI/EDMIAPI.vbproj index 30062d20..37518408 100644 --- a/Modules.EDMIAPI/EDMIAPI.vbproj +++ b/Modules.EDMIAPI/EDMIAPI.vbproj @@ -109,6 +109,9 @@ Reference.svcmap + + Reference.svcmap + Reference.svcmap @@ -138,6 +141,9 @@ Designer + + Designer + Designer @@ -155,6 +161,12 @@ + + + {903b2d7d-3b80-4be9-8713-7447b704e1b0} + Logging + + @@ -170,11 +182,5 @@ Reference.vb - - - {903b2d7d-3b80-4be9-8713-7447b704e1b0} - Logging - - \ No newline at end of file diff --git a/Modules.EDMIAPI/app.config b/Modules.EDMIAPI/app.config index d3b30754..46aaf5fc 100644 --- a/Modules.EDMIAPI/app.config +++ b/Modules.EDMIAPI/app.config @@ -25,7 +25,11 @@ - + + + + + diff --git a/SERVICES/DDEDM_NetworkService/App.config b/SERVICES/DDEDM_NetworkService/App.config index bcf47c3c..eed07e40 100644 --- a/SERVICES/DDEDM_NetworkService/App.config +++ b/SERVICES/DDEDM_NetworkService/App.config @@ -1,26 +1,22 @@ - + - + - - - + - + - - - + - - - + @@ -34,12 +30,20 @@ - + + - - + + + + + diff --git a/SERVICES/DDEDM_NetworkService/IDBService.vb b/SERVICES/DDEDM_NetworkService/IDBService.vb index bfbf3ee6..5f313fca 100644 --- a/SERVICES/DDEDM_NetworkService/IDBService.vb +++ b/SERVICES/DDEDM_NetworkService/IDBService.vb @@ -1,9 +1,9 @@ Imports System.ServiceModel Imports DigitalData.Modules.Database Imports DigitalData.Modules.Logging -Imports System.IO Imports DigitalData.Modules.Filesystem Imports DigitalData.Services.IDBService +Imports System.IO Public Class IDBService @@ -31,17 +31,16 @@ Public Class IDBService #Region "Auth" Private Function TestUserAuth() As Boolean Try - Dim oSQL As String = $"SELECT FNIDB_AUTH_USER('{_username}') FROM RDB$DATABASE;" - Dim oResult As Boolean = Database.GetScalarValue(oSQL) - - Return oResult + 'Dim oSQL As String = $"SELECT FNIDB_AUTH_USER('{_username}') FROM RDB$DATABASE;" + 'Dim oResult As Boolean = Database.GetScalarValue(oSQL) + 'Return oResult + Return True Catch ex As Exception _logger.Error(ex) Return False End Try End Function #End Region - #Region "Heartbeat" Public Function Heartbeat() As Boolean Implements IIDBService.Heartbeat Return True @@ -129,7 +128,7 @@ Public Class IDBService #End Region -#Region "Document" +#Region "Document (with FileContainer)" Public Function NewFile(FileName As String, Contents() As Byte) As DocumentResult Implements IIDBService.NewFile Try Dim oContainer As FileContainer @@ -237,6 +236,35 @@ Public Class IDBService End Sub #End Region +#Region "Document" + Public Function ImportFile(FileInfo As FileInfo, Contents() As Byte) As DocumentResult2 Implements IIDBService.ImportFile + Dim oFilePath = Path.Combine(AppConfig.ContainerPath, FileInfo.Name) + Dim oDocument = New DocumentResult2.DocumentObject() With {.FileName = FileInfo.Name} + + Try + _logger.Info("Saving file [{0}] to path [{1}]", FileInfo.Name, oFilePath) + Using oStream = New FileStream(oFilePath, FileMode.CreateNew) + oStream.Write(Contents, 0, Contents.Length) + oStream.Flush(True) + oStream.Close() + End Using + + Dim oAttributes = IO.File.GetAttributes(oFilePath) Or FileAttributes.ReadOnly + + _logger.Info("Setting LastAccessTime") + IO.File.SetLastAccessTime(oFilePath, Date.Now.AddYears(30)) + + _logger.Info("Setting ReadOnly Attribute") + IO.File.SetAttributes(oFilePath, oAttributes) + + Return New DocumentResult2(oDocument) + Catch ex As Exception + _logger.Error(ex) + Return New DocumentResult2(ex.Message) + End Try + End Function +#End Region + #Region "Utils" Public Function GetDocumentByDocumentId(DocumentId As Long) As DocumentResult Implements IIDBService.GetDocumentByDocumentId Try diff --git a/SERVICES/DDEDM_NetworkService/IDBService.vbproj b/SERVICES/DDEDM_NetworkService/IDBService.vbproj index 24016a7d..e12c5c86 100644 --- a/SERVICES/DDEDM_NetworkService/IDBService.vbproj +++ b/SERVICES/DDEDM_NetworkService/IDBService.vbproj @@ -90,6 +90,7 @@ + Component diff --git a/SERVICES/DDEDM_NetworkService/IIDBService.vb b/SERVICES/DDEDM_NetworkService/IIDBService.vb index d6482826..f072a38d 100644 --- a/SERVICES/DDEDM_NetworkService/IIDBService.vb +++ b/SERVICES/DDEDM_NetworkService/IIDBService.vb @@ -1,4 +1,5 @@ -Imports System.ServiceModel +Imports System.IO +Imports System.ServiceModel Imports DigitalData.Modules.Filesystem @@ -26,7 +27,7 @@ Interface IIDBService Function ExecuteNonQuery(SQL As String) As NonQueryResult #End Region -#Region "Document" +#Region "Document (with FileContainer)" Function NewFile(FileName As String, Contents As Byte()) As DocumentResult @@ -38,8 +39,11 @@ Interface IIDBService Function DeleteFile(DocObject As DocumentObject) As Boolean +#End Region - +#Region "Document (New)" + + Function ImportFile(FileInfo As FileInfo, Contents As Byte()) As DocumentResult2 #End Region #Region "Utils" diff --git a/SERVICES/DDEDM_NetworkService/Results/DocumentResult2.vb b/SERVICES/DDEDM_NetworkService/Results/DocumentResult2.vb new file mode 100644 index 00000000..7bd46302 --- /dev/null +++ b/SERVICES/DDEDM_NetworkService/Results/DocumentResult2.vb @@ -0,0 +1,28 @@ + +Public Class DocumentResult2 + Inherits BaseResult + + Public Document As DocumentObject + Public HasContents As Boolean = False + Public Contents As Byte() + + Public Sub New(Document As DocumentObject) + MyBase.New() + Me.Document = Document + End Sub + + Public Sub New(Document As DocumentObject, Contents As Byte()) + MyBase.New() + Me.Document = Document + Me.Contents = Contents + Me.HasContents = True + End Sub + + Public Sub New(ErrorMessage As String) + MyBase.New(ErrorMessage) + End Sub + + Public Class DocumentObject + Public FileName As String + End Class +End Class