Get DocumentObject from DocId or ContainerId

This commit is contained in:
Jonathan Jenne 2019-03-05 12:16:16 +01:00
parent bbd761c0ad
commit ec616ac9b8
14 changed files with 323 additions and 38 deletions

View File

@ -23,7 +23,11 @@ Partial Class frmFileTest
<System.Diagnostics.DebuggerStepThrough()> <System.Diagnostics.DebuggerStepThrough()>
Private Sub InitializeComponent() Private Sub InitializeComponent()
Me.Button1 = New System.Windows.Forms.Button() Me.Button1 = New System.Windows.Forms.Button()
Me.ListBox1 = New System.Windows.Forms.ListBox() 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.SuspendLayout() Me.SuspendLayout()
' '
'Button1 'Button1
@ -35,27 +39,69 @@ Partial Class frmFileTest
Me.Button1.Text = "Upload file" Me.Button1.Text = "Upload file"
Me.Button1.UseVisualStyleBackColor = True Me.Button1.UseVisualStyleBackColor = True
' '
'ListBox1 'listboxLog
' '
Me.ListBox1.FormattingEnabled = True Me.listboxLog.Dock = System.Windows.Forms.DockStyle.Bottom
Me.ListBox1.Location = New System.Drawing.Point(12, 45) Me.listboxLog.FormattingEnabled = True
Me.ListBox1.Name = "ListBox1" Me.listboxLog.Location = New System.Drawing.Point(0, 225)
Me.ListBox1.Size = New System.Drawing.Size(256, 95) Me.listboxLog.Name = "listboxLog"
Me.ListBox1.TabIndex = 1 Me.listboxLog.Size = New System.Drawing.Size(800, 225)
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
' '
'frmFileTest 'frmFileTest
' '
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(800, 450) Me.ClientSize = New System.Drawing.Size(800, 450)
Me.Controls.Add(Me.ListBox1) 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.Controls.Add(Me.Button1)
Me.Name = "frmFileTest" Me.Name = "frmFileTest"
Me.Text = "frmFileTest" Me.Text = "frmFileTest"
Me.ResumeLayout(False) Me.ResumeLayout(False)
Me.PerformLayout()
End Sub End Sub
Friend WithEvents Button1 As Button Friend WithEvents Button1 As Button
Friend WithEvents ListBox1 As ListBox 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
End Class End Class

View File

@ -17,24 +17,72 @@ Public Class frmFileTest
Private Async Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Private Async Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim oDialog = New OpenFileDialog() Dim oDialog = New OpenFileDialog()
Dim oResult = oDialog.ShowDialog() Dim oDialogResult = oDialog.ShowDialog()
If oResult <> DialogResult.OK Then If oDialogResult <> DialogResult.OK Then
Exit Sub Exit Sub
End If End If
Try Try
Dim oDocObject = Await _fileOp.ImportFileAsync(oDialog.FileName) Dim oResult = Await _fileOp.ImportFileAsync(oDialog.FileName)
If oDocObject.OK = False Then If oResult.OK = False Then
MsgBox(oDocObject.ErrorMessage) MsgBox(oResult.ErrorMessage)
Exit Sub Exit Sub
End If End If
ListBox1.Items.Add(oDocObject) 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($"----------------------------------------------------------")
Catch ex As Exception Catch ex As Exception
MsgBox(ex.Message) MsgBox(ex.Message)
_Logger.Error(ex) _Logger.Error(ex)
End Try End Try
End Sub 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)
If Not oResult.OK Then
MsgBox(oResult.ErrorMessage)
Exit Sub
End If
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
_ErrorHandler.ShowErrorMessage(ex)
End Try
End Sub
Private Sub btnDocByContainerId_Click(sender As Object, e As EventArgs) Handles btnDocByContainerId.Click
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
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
_ErrorHandler.ShowErrorMessage(ex)
End Try
End Sub
End Class End Class

View File

@ -1,3 +1,22 @@
Public Class Channel Imports System.ServiceModel
Public Class Channel
Public Shared Function GetBinding() As NetTcpBinding
Return New NetTcpBinding() With {
.MaxReceivedMessageSize = Constants.MAX_RECEIVED_MESSAGE_SIZE,
.MaxBufferSize = Constants.MAX_BUFFER_SIZE,
.MaxBufferPoolSize = Constants.MAX_BUFFER_POOL_SIZE,
.MaxConnections = Constants.MAX_CONNECTIONS,
.Security = New NetTcpSecurity() With {
.Mode = SecurityMode.Transport,
.Transport = New TcpTransportSecurity() With {
.ClientCredentialType = TcpClientCredentialType.Windows
}
},
.ReaderQuotas = New Xml.XmlDictionaryReaderQuotas() With {
.MaxArrayLength = Constants.MAX_ARRAY_LENGTH,
.MaxStringContentLength = Constants.MAX_STRING_CONTENT_LENGTH
}
}
End Function
End Class End Class

View File

@ -70,6 +70,18 @@
<wsdl:message name="IEDMService_DeleteFile_OutputMessage"> <wsdl:message name="IEDMService_DeleteFile_OutputMessage">
<wsdl:part name="parameters" element="tns:DeleteFileResponse" /> <wsdl:part name="parameters" element="tns:DeleteFileResponse" />
</wsdl:message> </wsdl:message>
<wsdl:message name="IEDMService_GetDocumentByDocumentId_InputMessage">
<wsdl:part name="parameters" element="tns:GetDocumentByDocumentId" />
</wsdl:message>
<wsdl:message name="IEDMService_GetDocumentByDocumentId_OutputMessage">
<wsdl:part name="parameters" element="tns:GetDocumentByDocumentIdResponse" />
</wsdl:message>
<wsdl:message name="IEDMService_GetDocumentByContainerId_InputMessage">
<wsdl:part name="parameters" element="tns:GetDocumentByContainerId" />
</wsdl:message>
<wsdl:message name="IEDMService_GetDocumentByContainerId_OutputMessage">
<wsdl:part name="parameters" element="tns:GetDocumentByContainerIdResponse" />
</wsdl:message>
<wsdl:message name="IEDMService_NewFileIndex_InputMessage"> <wsdl:message name="IEDMService_NewFileIndex_InputMessage">
<wsdl:part name="parameters" element="tns:NewFileIndex" /> <wsdl:part name="parameters" element="tns:NewFileIndex" />
</wsdl:message> </wsdl:message>
@ -117,6 +129,14 @@
<wsdl:input wsaw:Action="http://DigitalData.Services.EDMService/IEDMService/DeleteFile" message="tns:IEDMService_DeleteFile_InputMessage" /> <wsdl:input wsaw:Action="http://DigitalData.Services.EDMService/IEDMService/DeleteFile" message="tns:IEDMService_DeleteFile_InputMessage" />
<wsdl:output wsaw:Action="http://DigitalData.Services.EDMService/IEDMService/DeleteFileResponse" message="tns:IEDMService_DeleteFile_OutputMessage" /> <wsdl:output wsaw:Action="http://DigitalData.Services.EDMService/IEDMService/DeleteFileResponse" message="tns:IEDMService_DeleteFile_OutputMessage" />
</wsdl:operation> </wsdl:operation>
<wsdl:operation name="GetDocumentByDocumentId">
<wsdl:input wsaw:Action="http://DigitalData.Services.EDMService/IEDMService/GetDocumentByDocumentId" message="tns:IEDMService_GetDocumentByDocumentId_InputMessage" />
<wsdl:output wsaw:Action="http://DigitalData.Services.EDMService/IEDMService/GetDocumentByDocumentIdResponse" message="tns:IEDMService_GetDocumentByDocumentId_OutputMessage" />
</wsdl:operation>
<wsdl:operation name="GetDocumentByContainerId">
<wsdl:input wsaw:Action="http://DigitalData.Services.EDMService/IEDMService/GetDocumentByContainerId" message="tns:IEDMService_GetDocumentByContainerId_InputMessage" />
<wsdl:output wsaw:Action="http://DigitalData.Services.EDMService/IEDMService/GetDocumentByContainerIdResponse" message="tns:IEDMService_GetDocumentByContainerId_OutputMessage" />
</wsdl:operation>
<wsdl:operation name="NewFileIndex"> <wsdl:operation name="NewFileIndex">
<wsdl:input wsaw:Action="http://DigitalData.Services.EDMService/IEDMService/NewFileIndex" message="tns:IEDMService_NewFileIndex_InputMessage" /> <wsdl:input wsaw:Action="http://DigitalData.Services.EDMService/IEDMService/NewFileIndex" message="tns:IEDMService_NewFileIndex_InputMessage" />
<wsdl:output wsaw:Action="http://DigitalData.Services.EDMService/IEDMService/NewFileIndexResponse" message="tns:IEDMService_NewFileIndex_OutputMessage" /> <wsdl:output wsaw:Action="http://DigitalData.Services.EDMService/IEDMService/NewFileIndexResponse" message="tns:IEDMService_NewFileIndex_OutputMessage" />

View File

@ -139,10 +139,38 @@
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
<xs:element name="GetDocumentByDocumentId">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="DocumentId" type="xs:long" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="GetDocumentByDocumentIdResponse">
<xs:complexType>
<xs:sequence>
<xs:element xmlns:q10="http://schemas.datacontract.org/2004/07/DigitalData.Services.EDMService" minOccurs="0" name="GetDocumentByDocumentIdResult" nillable="true" type="q10:DocumentResult" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="GetDocumentByContainerId">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="ContainerId" nillable="true" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="GetDocumentByContainerIdResponse">
<xs:complexType>
<xs:sequence>
<xs:element xmlns:q11="http://schemas.datacontract.org/2004/07/DigitalData.Services.EDMService" minOccurs="0" name="GetDocumentByContainerIdResult" nillable="true" type="q11:DocumentResult" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="NewFileIndex"> <xs:element name="NewFileIndex">
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:sequence>
<xs:element xmlns:q10="http://schemas.datacontract.org/2004/07/DigitalData.Modules.Filesystem" minOccurs="0" name="DocObject" nillable="true" type="q10:DocumentObject" /> <xs:element xmlns:q12="http://schemas.datacontract.org/2004/07/DigitalData.Modules.Filesystem" minOccurs="0" name="DocObject" nillable="true" type="q12:DocumentObject" />
<xs:element minOccurs="0" name="Syskey" nillable="true" type="xs:string" /> <xs:element minOccurs="0" name="Syskey" nillable="true" type="xs:string" />
<xs:element minOccurs="0" name="LanguageCode" nillable="true" type="xs:string" /> <xs:element minOccurs="0" name="LanguageCode" nillable="true" type="xs:string" />
<xs:element minOccurs="0" name="Value" nillable="true" type="xs:string" /> <xs:element minOccurs="0" name="Value" nillable="true" type="xs:string" />
@ -152,7 +180,7 @@
<xs:element name="NewFileIndexResponse"> <xs:element name="NewFileIndexResponse">
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:sequence>
<xs:element xmlns:q11="http://schemas.datacontract.org/2004/07/DigitalData.Services.EDMService" minOccurs="0" name="NewFileIndexResult" nillable="true" type="q11:IndexResult" /> <xs:element xmlns:q13="http://schemas.datacontract.org/2004/07/DigitalData.Services.EDMService" minOccurs="0" name="NewFileIndexResult" nillable="true" type="q13:IndexResult" />
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>

View File

@ -363,6 +363,22 @@ Namespace EDMIServiceReference
<System.ServiceModel.OperationContractAttribute(Action:="http://DigitalData.Services.EDMService/IEDMService/DeleteFile", ReplyAction:="http://DigitalData.Services.EDMService/IEDMService/DeleteFileResponse")> _ <System.ServiceModel.OperationContractAttribute(Action:="http://DigitalData.Services.EDMService/IEDMService/DeleteFile", ReplyAction:="http://DigitalData.Services.EDMService/IEDMService/DeleteFileResponse")> _
Function DeleteFileAsync(ByVal DocObject As EDMIServiceReference.DocumentObject) As System.Threading.Tasks.Task(Of Boolean) Function DeleteFileAsync(ByVal DocObject As EDMIServiceReference.DocumentObject) As System.Threading.Tasks.Task(Of Boolean)
<System.ServiceModel.OperationContractAttribute(Action:="http://DigitalData.Services.EDMService/IEDMService/GetDocumentByDocumentId", ReplyAction:="http://DigitalData.Services.EDMService/IEDMService/GetDocumentByDocumentIdRespons"& _
"e")> _
Function GetDocumentByDocumentId(ByVal DocumentId As Long) As EDMIServiceReference.DocumentResult
<System.ServiceModel.OperationContractAttribute(Action:="http://DigitalData.Services.EDMService/IEDMService/GetDocumentByDocumentId", ReplyAction:="http://DigitalData.Services.EDMService/IEDMService/GetDocumentByDocumentIdRespons"& _
"e")> _
Function GetDocumentByDocumentIdAsync(ByVal DocumentId As Long) As System.Threading.Tasks.Task(Of EDMIServiceReference.DocumentResult)
<System.ServiceModel.OperationContractAttribute(Action:="http://DigitalData.Services.EDMService/IEDMService/GetDocumentByContainerId", ReplyAction:="http://DigitalData.Services.EDMService/IEDMService/GetDocumentByContainerIdRespon"& _
"se")> _
Function GetDocumentByContainerId(ByVal ContainerId As String) As EDMIServiceReference.DocumentResult
<System.ServiceModel.OperationContractAttribute(Action:="http://DigitalData.Services.EDMService/IEDMService/GetDocumentByContainerId", ReplyAction:="http://DigitalData.Services.EDMService/IEDMService/GetDocumentByContainerIdRespon"& _
"se")> _
Function GetDocumentByContainerIdAsync(ByVal ContainerId As String) As System.Threading.Tasks.Task(Of EDMIServiceReference.DocumentResult)
<System.ServiceModel.OperationContractAttribute(Action:="http://DigitalData.Services.EDMService/IEDMService/NewFileIndex", ReplyAction:="http://DigitalData.Services.EDMService/IEDMService/NewFileIndexResponse")> _ <System.ServiceModel.OperationContractAttribute(Action:="http://DigitalData.Services.EDMService/IEDMService/NewFileIndex", ReplyAction:="http://DigitalData.Services.EDMService/IEDMService/NewFileIndexResponse")> _
Function NewFileIndex(ByVal DocObject As EDMIServiceReference.DocumentObject, ByVal Syskey As String, ByVal LanguageCode As String, ByVal Value As String) As EDMIServiceReference.IndexResult Function NewFileIndex(ByVal DocObject As EDMIServiceReference.DocumentObject, ByVal Syskey As String, ByVal LanguageCode As String, ByVal Value As String) As EDMIServiceReference.IndexResult
@ -481,6 +497,22 @@ Namespace EDMIServiceReference
Return MyBase.Channel.DeleteFileAsync(DocObject) Return MyBase.Channel.DeleteFileAsync(DocObject)
End Function End Function
Public Function GetDocumentByDocumentId(ByVal DocumentId As Long) As EDMIServiceReference.DocumentResult Implements EDMIServiceReference.IEDMService.GetDocumentByDocumentId
Return MyBase.Channel.GetDocumentByDocumentId(DocumentId)
End Function
Public Function GetDocumentByDocumentIdAsync(ByVal DocumentId As Long) As System.Threading.Tasks.Task(Of EDMIServiceReference.DocumentResult) Implements EDMIServiceReference.IEDMService.GetDocumentByDocumentIdAsync
Return MyBase.Channel.GetDocumentByDocumentIdAsync(DocumentId)
End Function
Public Function GetDocumentByContainerId(ByVal ContainerId As String) As EDMIServiceReference.DocumentResult Implements EDMIServiceReference.IEDMService.GetDocumentByContainerId
Return MyBase.Channel.GetDocumentByContainerId(ContainerId)
End Function
Public Function GetDocumentByContainerIdAsync(ByVal ContainerId As String) As System.Threading.Tasks.Task(Of EDMIServiceReference.DocumentResult) Implements EDMIServiceReference.IEDMService.GetDocumentByContainerIdAsync
Return MyBase.Channel.GetDocumentByContainerIdAsync(ContainerId)
End Function
Public Function NewFileIndex(ByVal DocObject As EDMIServiceReference.DocumentObject, ByVal Syskey As String, ByVal LanguageCode As String, ByVal Value As String) As EDMIServiceReference.IndexResult Implements EDMIServiceReference.IEDMService.NewFileIndex Public Function NewFileIndex(ByVal DocObject As EDMIServiceReference.DocumentObject, ByVal Syskey As String, ByVal LanguageCode As String, ByVal Value As String) As EDMIServiceReference.IndexResult Implements EDMIServiceReference.IEDMService.NewFileIndex
Return MyBase.Channel.NewFileIndex(DocObject, Syskey, LanguageCode, Value) Return MyBase.Channel.NewFileIndex(DocObject, Syskey, LanguageCode, Value)
End Function End Function

View File

@ -129,6 +129,24 @@
<soap12:body use="literal" /> <soap12:body use="literal" />
</wsdl:output> </wsdl:output>
</wsdl:operation> </wsdl:operation>
<wsdl:operation name="GetDocumentByDocumentId">
<soap12:operation soapAction="http://DigitalData.Services.EDMService/IEDMService/GetDocumentByDocumentId" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GetDocumentByContainerId">
<soap12:operation soapAction="http://DigitalData.Services.EDMService/IEDMService/GetDocumentByContainerId" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="NewFileIndex"> <wsdl:operation name="NewFileIndex">
<soap12:operation soapAction="http://DigitalData.Services.EDMService/IEDMService/NewFileIndex" style="document" /> <soap12:operation soapAction="http://DigitalData.Services.EDMService/IEDMService/NewFileIndex" style="document" />
<wsdl:input> <wsdl:input>

View File

@ -0,0 +1,8 @@
Public Class Constants
Public Const MAX_RECEIVED_MESSAGE_SIZE = 2147483647
Public Const MAX_BUFFER_SIZE = 2147483647
Public Const MAX_BUFFER_POOL_SIZE = 2147483647
Public Const MAX_CONNECTIONS = 10000
Public Const MAX_ARRAY_LENGTH = 2147483647
Public Const MAX_STRING_CONTENT_LENGTH = 2147483647
End Class

View File

@ -8,22 +8,14 @@ Public Class Document
Private _logConfig As LogConfig Private _logConfig As LogConfig
Private _channelFactory As ChannelFactory(Of IEDMServiceChannel) Private _channelFactory As ChannelFactory(Of IEDMServiceChannel)
Private _channel As IEDMServiceChannel Private _channel As IEDMServiceChannel
Public Sub New(LogConfig As LogConfig, EDMI_ServiceAdress As String) Public Sub New(LogConfig As LogConfig, ServiceAdress As String)
_logger = LogConfig.GetLogger() _logger = LogConfig.GetLogger()
_logConfig = LogConfig _logConfig = LogConfig
Try Try
Dim binding As New NetTcpBinding() Dim oBinding = Channel.GetBinding()
binding.Security.Mode = SecurityMode.Transport Dim oAddress = New EndpointAddress(ServiceAdress)
binding.Security.Transport.ClientCredentialType = TcpClientCredentialType.Windows _channelFactory = New ChannelFactory(Of IEDMServiceChannel)(oBinding, oAddress)
binding.MaxReceivedMessageSize = 2147483647
binding.MaxBufferSize = 2147483647
binding.MaxBufferPoolSize = 2147483647
binding.MaxConnections = 10000
binding.ReaderQuotas.MaxArrayLength = 2147483647
binding.ReaderQuotas.MaxStringContentLength = 2147483647
Dim endpointAddress = New EndpointAddress(EDMI_ServiceAdress)
_channelFactory = New ChannelFactory(Of IEDMServiceChannel)(binding, endpointAddress)
Connect2NetService() Connect2NetService()
Catch ex As Exception Catch ex As Exception
_logger.Error(ex) _logger.Error(ex)
@ -110,6 +102,24 @@ Public Class Document
End Try End Try
End Function End Function
Public Function GetDocumentByDocumentId(DocumentId As Int64) As DocumentResult
Try
Return _channel.GetDocumentByDocumentId(DocumentId)
Catch ex As Exception
_logger.Error(ex)
Throw ex
End Try
End Function
Public Function GetDocumentByContainerId(ContainerId As String) As DocumentResult
Try
Return _channel.GetDocumentByContainerId(ContainerId)
Catch ex As Exception
_logger.Error(ex)
Throw ex
End Try
End Function
'Public Async Function New_EDMI_File(oFILENAME As String, oUserName As String) As Task(Of String) 'Public Async Function New_EDMI_File(oFILENAME As String, oUserName As String) As Task(Of String)
' Try ' Try
' Dim oFileGUID As DocumentResult = Await CreateDocument(oFILENAME) ' Dim oFileGUID As DocumentResult = Await CreateDocument(oFILENAME)

View File

@ -78,6 +78,7 @@
<DesignTime>True</DesignTime> <DesignTime>True</DesignTime>
<DependentUpon>Reference.svcmap</DependentUpon> <DependentUpon>Reference.svcmap</DependentUpon>
</Compile> </Compile>
<Compile Include="Constants.vb" />
<Compile Include="Document.vb" /> <Compile Include="Document.vb" />
<Compile Include="My Project\AssemblyInfo.vb" /> <Compile Include="My Project\AssemblyInfo.vb" />
<Compile Include="My Project\Application.Designer.vb"> <Compile Include="My Project\Application.Designer.vb">

View File

@ -3,6 +3,7 @@ Imports DigitalData.Modules.Database
Imports DigitalData.Modules.Logging Imports DigitalData.Modules.Logging
Imports DigitalData.Modules.Filesystem Imports DigitalData.Modules.Filesystem
Imports System.IO Imports System.IO
Imports DigitalData.Services.EDMService
<ServiceBehavior(InstanceContextMode:=InstanceContextMode.PerSession)> <ServiceBehavior(InstanceContextMode:=InstanceContextMode.PerSession)>
Public Class EDMService Public Class EDMService
@ -236,10 +237,56 @@ Public Class EDMService
End Sub End Sub
#End Region #End Region
#Region "Utils"
Public Function GetDocumentByDocumentId(DocumentId As Long) As DocumentResult Implements IEDMService.GetDocumentByDocumentId
Try
Dim oSQL = $"SELECT GUID, CONTAINER_ID, ORIGINAL_FILENAME FROM TBICM_DOCUMENT WHERE GUID = {DocumentId}"
Dim oTable = Database.GetDatatable(oSQL)
If oTable.Rows.Count = 0 Then
Return New DocumentResult("Document not found")
End If
Dim oRow As DataRow = oTable.Rows.Item(0)
Dim oDocument As New DocumentObject(
oRow.Item("CONTAINER_ID"),
oRow.Item("GUID"),
oRow.Item("ORIGINAL_FILENAME")
)
Return New DocumentResult(oDocument)
Catch ex As Exception
Return New DocumentResult(ex.Message)
End Try
End Function
Public Function GetDocumentByContainerId(ContainerId As String) As DocumentResult Implements IEDMService.GetDocumentByContainerId
Try
Dim oSQL = $"SELECT GUID, CONTAINER_ID, ORIGINAL_FILENAME FROM TBICM_DOCUMENT WHERE CONTAINER_ID = '{ContainerId}'"
Dim oTable = Database.GetDatatable(oSQL)
If oTable.Rows.Count = 0 Then
Return New DocumentResult("Document not found")
End If
Dim oRow As DataRow = oTable.Rows.Item(0)
Dim oDocument As New DocumentObject(
oRow.Item("CONTAINER_ID"),
oRow.Item("GUID"),
oRow.Item("ORIGINAL_FILENAME")
)
Return New DocumentResult(oDocument)
Catch ex As Exception
Return New DocumentResult(ex.Message)
End Try
End Function
#End Region
#Region "Index" #Region "Index"
Public Function NewFileIndex(DocObject As DocumentObject, Syskey As String, LanguageCode As String, Value As String) As IndexResult Implements IEDMService.NewFileIndex Public Function NewFileIndex(DocObject As DocumentObject, Syskey As String, LanguageCode As String, Value As String) As IndexResult Implements IEDMService.NewFileIndex
Try Try
Dim oSQL = $"SELECT FNICM_NEW_OBJECT_VALUE({DocObject.DocumentId},'{Syskey}','{LanguageCode}','{Value}','{_username}') FROM RDB$DATABASE;" Dim oSQL = $"SELECT FNICM_NEW_DOC_VALUE({DocObject.DocumentId},'{Syskey}','{LanguageCode}','{Value}','{_username}') FROM RDB$DATABASE;"
Dim oIndexId As Int64 = Database.GetScalarValue(oSQL) Dim oIndexId As Int64 = Database.GetScalarValue(oSQL)
Return New IndexResult(oIndexId) Return New IndexResult(oIndexId)

View File

@ -40,6 +40,14 @@ Interface IEDMService
Function DeleteFile(DocObject As DocumentObject) As Boolean Function DeleteFile(DocObject As DocumentObject) As Boolean
#End Region #End Region
#Region "Utils"
<OperationContract>
Function GetDocumentByDocumentId(DocumentId As Int64) As DocumentResult
<OperationContract>
Function GetDocumentByContainerId(ContainerId As String) As DocumentResult
#End Region
#Region "Index" #Region "Index"
<OperationContract> <OperationContract>
Function NewFileIndex(DocObject As DocumentObject, Syskey As String, LanguageCode As String, Value As String) As IndexResult Function NewFileIndex(DocObject As DocumentObject, Syskey As String, LanguageCode As String, Value As String) As IndexResult

View File

@ -10,7 +10,7 @@ Public Class BaseResult
Public Property ErrorMessage As String Public Property ErrorMessage As String
Public Sub New() Public Sub New()
Me.OK = OK OK = True
End Sub End Sub
Public Sub New(ErrorMessage As String) Public Sub New(ErrorMessage As String)

View File

@ -36,8 +36,8 @@ Public Class WindowsService
_logger = _logConfig.GetLogger() _logger = _logConfig.GetLogger()
_logger.Info("Service {0} is starting", SERVICE_DISPLAY_NAME) _logger.Info("Service {0} is starting...", SERVICE_DISPLAY_NAME)
_logger.Info("Connecting to database") _logger.Debug("Connecting to database...")
_db = New Firebird( _db = New Firebird(
_logConfig, _logConfig,
@ -47,20 +47,20 @@ Public Class WindowsService
AppConfig.FirebirdPassword AppConfig.FirebirdPassword
) )
_logger.Info("Successfully connected to database!") _logger.Info("Database connection established.")
EDMService.Database = _db EDMService.Database = _db
EDMService.LogConfig = _logConfig EDMService.LogConfig = _logConfig
EDMService.AppConfig = _config EDMService.AppConfig = _config
_logger.Info("Starting the WCF Service") _logger.Debug("Starting WCF ServiceHost...")
_serviceHost = New ServiceHost(GetType(EDMService)) _serviceHost = New ServiceHost(GetType(EDMService))
_serviceHost.Open() _serviceHost.Open()
_logger.Info("Successfully started the WCF Service!") _logger.Info("WCF ServiceHost started.")
_logger.Info("Service {0} successfully started!", SERVICE_DISPLAY_NAME) _logger.Info("Service {0} successfully started.", SERVICE_DISPLAY_NAME)
Catch ex As Exception Catch ex As Exception
_logger.Error(ex, "Failed to start the service host!") _logger.Error(ex, "Failed to start the service host!")
End Try End Try