EDMIService: Automatic indexing, more consolidation of globix logic

This commit is contained in:
Jonathan Jenne 2021-12-06 15:01:14 +01:00
parent 34517ce209
commit 785b138c57
35 changed files with 1259 additions and 255 deletions

View File

@ -160,7 +160,9 @@ Public Class Client
}, },
.KindType = pObjectKind, .KindType = pObjectKind,
.StoreName = pObjectStoreName, .StoreName = pObjectStoreName,
.Who = pImportOptions.Username .User = New UserState With {
.UserName = pImportOptions.Username
}
}) })
If oFileImportResponse.OK = False Then If oFileImportResponse.OK = False Then
@ -176,58 +178,61 @@ Public Class Client
End Try End Try
End Function End Function
'Public Function ImportFileAsync(pFilePath As String, pObjectStoreName As String, pObjectKind As String, pBusinessEntity As String, Optional pImportOptions As NewFileOptions = Nothing) Public Async Function ImportFileAsync(pFilePath As String, pObjectStoreName As String, pObjectKind As String, pBusinessEntity As String, Optional pImportOptions As NewFileOptions = Nothing) As Task(Of Long)
' Try Try
' ' Set default options ' Set default options
' If pImportOptions Is Nothing Then If pImportOptions Is Nothing Then
' pImportOptions = New NewFileOptions() pImportOptions = New NewFileOptions()
' End If End If
' ' Check if file exists ' Check if file exists
' If File.Exists(pFilePath) = False Then If File.Exists(pFilePath) = False Then
' Throw New FileNotFoundException("Path does not exist") Throw New FileNotFoundException("Path does not exist")
' End If End If
' Dim oFileInfo As New FileInfo(pFilePath) Dim oFileInfo As New FileInfo(pFilePath)
' Dim oExtension As String = oFileInfo.Extension Dim oExtension As String = oFileInfo.Extension
' Dim oFileName As String = oFileInfo.Name Dim oFileName As String = oFileInfo.Name
' Dim oFileCreatedAt As Date = oFileInfo?.CreationTime Dim oFileCreatedAt As Date = oFileInfo?.CreationTime
' Dim oFileModifiedAt As Date = oFileInfo?.LastWriteTime Dim oFileModifiedAt As Date = oFileInfo?.LastWriteTime
' Dim oFileHash As String = _FileEx.GetChecksum(oFileInfo.FullName) Dim oFileHash As String = _FileEx.GetChecksum(oFileInfo.FullName)
' ' Importing the file now ' Importing the file now
' Using oFileStream As New FileStream(pFilePath, FileMode.Open, FileAccess.Read) Using oFileStream As New FileStream(pFilePath, FileMode.Open, FileAccess.Read)
' Using oMemoryStream As New MemoryStream() Using oMemoryStream As New MemoryStream()
' oFileStream.CopyTo(oMemoryStream) oFileStream.CopyTo(oMemoryStream)
' Dim oContents = oMemoryStream.ToArray() Dim oContents = oMemoryStream.ToArray()
' Dim oFileImportResponse = Await _channel.NewFIleAsync (New NewFileRequest With { Dim oFileImportResponse = Await _channel.ImportFileAsync(New ImportFileRequest With {
' .BusinessEntity = pBusinessEntity, .BusinessEntity = pBusinessEntity,
' .File = New FileProperties With { .File = New FileProperties With {
' .FileName = oFileInfo.Name, .FileName = oFileInfo.Name,
' .FileCreatedAt = oFileCreatedAt, .FileCreatedAt = oFileCreatedAt,
' .FileChangedAt = oFileModifiedAt, .FileChangedAt = oFileModifiedAt,
' .FileContents = oContents, .FileContents = oContents,
' .FileImportedAt = pImportOptions.DateImported, .FileImportedAt = pImportOptions.DateImported,
' .FileChecksum = oFileHash .FileChecksum = oFileHash,
' }, .FileInfoRaw = oFileInfo
' .KindType = pObjectKind, },
' .StoreName = pObjectStoreName, .KindType = pObjectKind,
' .Who = pImportOptions.Username .StoreName = pObjectStoreName,
' }) .User = New UserState With {
' If oFileImportResponse.OK = False Then .UserName = pImportOptions.Username
' Throw New ApplicationException("Could not Import File Contents!") }
' End If })
If oFileImportResponse.OK = False Then
Throw New ApplicationException("Could not Import File Contents!")
End If
' Return oFileImportResponse.ObjectId Return oFileImportResponse.ObjectId
' End Using End Using
' End Using End Using
' Catch ex As Exception Catch ex As Exception
' _logger.Error(ex) _logger.Error(ex)
' Return INVALID_OBEJCT_ID Return INVALID_OBEJCT_ID
' End Try End Try
'End Function End Function
''' <summary> ''' <summary>
''' Sets a value to an attribute ''' Sets a value to an attribute

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:tns="http://schemas.microsoft.com/2003/10/Serialization/Arrays" elementFormDefault="qualified" targetNamespace="http://schemas.microsoft.com/2003/10/Serialization/Arrays" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="ArrayOfstring">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="string" nillable="true" type="xs:string" />
</xs:sequence>
</xs:complexType>
<xs:element name="ArrayOfstring" nillable="true" type="tns:ArrayOfstring" />
</xs:schema>

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
This file is automatically generated by Visual Studio .Net. It is
used to store generic object data source configuration information.
Renaming the file extension or editing the content of this file may
cause the file to be unrecognizable by the program.
-->
<GenericObjectDataSource DisplayName="ImportFileResponse" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
<TypeInfo>DigitalData.Modules.EDMI.API.EDMIServiceReference.ImportFileResponse, Connected Services.EDMIServiceReference.Reference.vb.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
</GenericObjectDataSource>

View File

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:tns="http://schemas.datacontract.org/2004/07/DigitalData.Modules.ZooFlow.State" elementFormDefault="qualified" targetNamespace="http://schemas.datacontract.org/2004/07/DigitalData.Modules.ZooFlow.State" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="UserState">
<xs:sequence>
<xs:element minOccurs="0" name="DateFormat" nillable="true" type="xs:string" />
<xs:element minOccurs="0" name="Email" nillable="true" type="xs:string" />
<xs:element minOccurs="0" name="GivenName" nillable="true" type="xs:string" />
<xs:element minOccurs="0" name="HideBasicConfig" type="xs:boolean" />
<xs:element minOccurs="0" name="IsAdmin" type="xs:boolean" />
<xs:element minOccurs="0" name="Language" nillable="true" type="xs:string" />
<xs:element minOccurs="0" name="LanguageId" type="xs:int" />
<xs:element minOccurs="0" name="MachineName" nillable="true" type="xs:string" />
<xs:element minOccurs="0" name="ShortName" nillable="true" type="xs:string" />
<xs:element minOccurs="0" name="Surname" nillable="true" type="xs:string" />
<xs:element minOccurs="0" name="UserId" type="xs:int" />
<xs:element minOccurs="0" name="UserName" nillable="true" type="xs:string" />
</xs:sequence>
</xs:complexType>
<xs:element name="UserState" nillable="true" type="tns:UserState" />
</xs:schema>

View File

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:tns="http://schemas.datacontract.org/2004/07/DigitalData.Services.EDMIService.Methods.GlobalIndexer.ImportFile" elementFormDefault="qualified" targetNamespace="http://schemas.datacontract.org/2004/07/DigitalData.Services.EDMIService.Methods.GlobalIndexer.ImportFile" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:import namespace="http://schemas.datacontract.org/2004/07/DigitalData.Services.EDMIService.Methods" />
<xs:import namespace="http://schemas.datacontract.org/2004/07/DigitalData.Modules.ZooFlow.State" />
<xs:import namespace="http://schemas.datacontract.org/2004/07/DigitalData.Services.EDMIService.Messages" />
<xs:complexType name="ImportFileRequest">
<xs:sequence>
<xs:element xmlns:q1="http://schemas.datacontract.org/2004/07/DigitalData.Services.EDMIService.Methods" minOccurs="0" name="AttributeValues" nillable="true" type="q1:ArrayOfUserAttributeValue" />
<xs:element minOccurs="0" name="BusinessEntity" nillable="true" type="xs:string" />
<xs:element xmlns:q2="http://schemas.datacontract.org/2004/07/DigitalData.Services.EDMIService.Methods" minOccurs="0" name="File" nillable="true" type="q2:FileProperties" />
<xs:element minOccurs="0" name="KindType" nillable="true" type="xs:string" />
<xs:element minOccurs="0" name="ProfileId" type="xs:int" />
<xs:element minOccurs="0" name="StoreName" nillable="true" type="xs:string" />
<xs:element xmlns:q3="http://schemas.datacontract.org/2004/07/DigitalData.Modules.ZooFlow.State" minOccurs="0" name="User" nillable="true" type="q3:UserState" />
</xs:sequence>
</xs:complexType>
<xs:element name="ImportFileRequest" nillable="true" type="tns:ImportFileRequest" />
<xs:complexType name="ImportFileResponse">
<xs:complexContent mixed="false">
<xs:extension xmlns:q4="http://schemas.datacontract.org/2004/07/DigitalData.Services.EDMIService.Messages" base="q4:BaseResponse">
<xs:sequence>
<xs:element minOccurs="0" name="ObjectId" type="xs:long" />
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="ImportFileResponse" nillable="true" type="tns:ImportFileResponse" />
</xs:schema>

View File

@ -1,21 +1,21 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:tns="http://schemas.datacontract.org/2004/07/DigitalData.Services.EDMIService.Methods.NewFile" elementFormDefault="qualified" targetNamespace="http://schemas.datacontract.org/2004/07/DigitalData.Services.EDMIService.Methods.NewFile" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:schema xmlns:tns="http://schemas.datacontract.org/2004/07/DigitalData.Services.EDMIService.Methods.NewFile" elementFormDefault="qualified" targetNamespace="http://schemas.datacontract.org/2004/07/DigitalData.Services.EDMIService.Methods.NewFile" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:import namespace="http://schemas.datacontract.org/2004/07/DigitalData.Services.EDMIService.Methods" /> <xs:import namespace="http://schemas.datacontract.org/2004/07/DigitalData.Services.EDMIService.Methods" />
<xs:import namespace="http://schemas.datacontract.org/2004/07/DigitalData.Modules.ZooFlow.State" />
<xs:import namespace="http://schemas.datacontract.org/2004/07/DigitalData.Services.EDMIService.Messages" /> <xs:import namespace="http://schemas.datacontract.org/2004/07/DigitalData.Services.EDMIService.Messages" />
<xs:complexType name="NewFileRequest"> <xs:complexType name="NewFileRequest">
<xs:sequence> <xs:sequence>
<xs:element minOccurs="0" name="BusinessEntity" nillable="true" type="xs:string" /> <xs:element minOccurs="0" name="BusinessEntity" nillable="true" type="xs:string" />
<xs:element xmlns:q1="http://schemas.datacontract.org/2004/07/DigitalData.Services.EDMIService.Methods" minOccurs="0" name="File" nillable="true" type="q1:FileProperties" /> <xs:element xmlns:q1="http://schemas.datacontract.org/2004/07/DigitalData.Services.EDMIService.Methods" minOccurs="0" name="File" nillable="true" type="q1:FileProperties" />
<xs:element minOccurs="0" name="KindType" nillable="true" type="xs:string" /> <xs:element minOccurs="0" name="KindType" nillable="true" type="xs:string" />
<xs:element minOccurs="0" name="Language" nillable="true" type="xs:string" />
<xs:element minOccurs="0" name="StoreName" nillable="true" type="xs:string" /> <xs:element minOccurs="0" name="StoreName" nillable="true" type="xs:string" />
<xs:element minOccurs="0" name="Who" nillable="true" type="xs:string" /> <xs:element xmlns:q2="http://schemas.datacontract.org/2004/07/DigitalData.Modules.ZooFlow.State" minOccurs="0" name="User" nillable="true" type="q2:UserState" />
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>
<xs:element name="NewFileRequest" nillable="true" type="tns:NewFileRequest" /> <xs:element name="NewFileRequest" nillable="true" type="tns:NewFileRequest" />
<xs:complexType name="NewFileResponse"> <xs:complexType name="NewFileResponse">
<xs:complexContent mixed="false"> <xs:complexContent mixed="false">
<xs:extension xmlns:q2="http://schemas.datacontract.org/2004/07/DigitalData.Services.EDMIService.Messages" base="q2:BaseResponse"> <xs:extension xmlns:q3="http://schemas.datacontract.org/2004/07/DigitalData.Services.EDMIService.Messages" base="q3:BaseResponse">
<xs:sequence> <xs:sequence>
<xs:element minOccurs="0" name="ObjectId" type="xs:long" /> <xs:element minOccurs="0" name="ObjectId" type="xs:long" />
</xs:sequence> </xs:sequence>

View File

@ -1,5 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:tns="http://schemas.datacontract.org/2004/07/DigitalData.Services.EDMIService.Methods" elementFormDefault="qualified" targetNamespace="http://schemas.datacontract.org/2004/07/DigitalData.Services.EDMIService.Methods" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:schema xmlns:tns="http://schemas.datacontract.org/2004/07/DigitalData.Services.EDMIService.Methods" elementFormDefault="qualified" targetNamespace="http://schemas.datacontract.org/2004/07/DigitalData.Services.EDMIService.Methods" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:import namespace="http://schemas.datacontract.org/2004/07/System.IO" />
<xs:import namespace="http://schemas.microsoft.com/2003/10/Serialization/Arrays" />
<xs:complexType name="FileProperties"> <xs:complexType name="FileProperties">
<xs:sequence> <xs:sequence>
<xs:element minOccurs="0" name="FileChangedAt" nillable="true" type="xs:string" /> <xs:element minOccurs="0" name="FileChangedAt" nillable="true" type="xs:string" />
@ -7,8 +9,24 @@
<xs:element minOccurs="0" name="FileContents" nillable="true" type="xs:base64Binary" /> <xs:element minOccurs="0" name="FileContents" nillable="true" type="xs:base64Binary" />
<xs:element minOccurs="0" name="FileCreatedAt" nillable="true" type="xs:string" /> <xs:element minOccurs="0" name="FileCreatedAt" nillable="true" type="xs:string" />
<xs:element minOccurs="0" name="FileImportedAt" type="xs:dateTime" /> <xs:element minOccurs="0" name="FileImportedAt" type="xs:dateTime" />
<xs:element xmlns:q1="http://schemas.datacontract.org/2004/07/System.IO" minOccurs="0" name="FileInfoRaw" nillable="true" type="q1:FileInfo" />
<xs:element minOccurs="0" name="FileName" nillable="true" type="xs:string" /> <xs:element minOccurs="0" name="FileName" nillable="true" type="xs:string" />
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>
<xs:element name="FileProperties" nillable="true" type="tns:FileProperties" /> <xs:element name="FileProperties" nillable="true" type="tns:FileProperties" />
<xs:complexType name="ArrayOfUserAttributeValue">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="UserAttributeValue" nillable="true" type="tns:UserAttributeValue" />
</xs:sequence>
</xs:complexType>
<xs:element name="ArrayOfUserAttributeValue" nillable="true" type="tns:ArrayOfUserAttributeValue" />
<xs:complexType name="UserAttributeValue">
<xs:sequence>
<xs:element minOccurs="0" name="AttributeId" type="xs:int" />
<xs:element minOccurs="0" name="AttributeName" nillable="true" type="xs:string" />
<xs:element xmlns:q2="http://schemas.microsoft.com/2003/10/Serialization/Arrays" minOccurs="0" name="AttributeValues" nillable="true" type="q2:ArrayOfstring" />
<xs:element minOccurs="0" name="ControlName" nillable="true" type="xs:string" />
</xs:sequence>
</xs:complexType>
<xs:element name="UserAttributeValue" nillable="true" type="tns:UserAttributeValue" />
</xs:schema> </xs:schema>

View File

@ -10,7 +10,11 @@
<xsd:import namespace="http://schemas.datacontract.org/2004/07/System.Data" /> <xsd:import namespace="http://schemas.datacontract.org/2004/07/System.Data" />
<xsd:import namespace="http://schemas.datacontract.org/2004/07/DigitalData.Services.EDMIService.Methods.NewFile" /> <xsd:import namespace="http://schemas.datacontract.org/2004/07/DigitalData.Services.EDMIService.Methods.NewFile" />
<xsd:import namespace="http://schemas.datacontract.org/2004/07/DigitalData.Services.EDMIService.Methods" /> <xsd:import namespace="http://schemas.datacontract.org/2004/07/DigitalData.Services.EDMIService.Methods" />
<xsd:import namespace="http://schemas.datacontract.org/2004/07/System.IO" />
<xsd:import namespace="http://schemas.datacontract.org/2004/07/DigitalData.Modules.ZooFlow.State" />
<xsd:import namespace="http://schemas.datacontract.org/2004/07/DigitalData.Services.EDMIService.Methods.SetAttributeValue" /> <xsd:import namespace="http://schemas.datacontract.org/2004/07/DigitalData.Services.EDMIService.Methods.SetAttributeValue" />
<xsd:import namespace="http://schemas.datacontract.org/2004/07/DigitalData.Services.EDMIService.Methods.GlobalIndexer.ImportFile" />
<xsd:import namespace="http://schemas.microsoft.com/2003/10/Serialization/Arrays" />
<xsd:import namespace="http://schemas.microsoft.com/Message" /> <xsd:import namespace="http://schemas.microsoft.com/Message" />
<xsd:import namespace="http://schemas.datacontract.org/2004/07/DigitalData.Modules.EDMI.API" /> <xsd:import namespace="http://schemas.datacontract.org/2004/07/DigitalData.Modules.EDMI.API" />
</xsd:schema> </xsd:schema>
@ -126,6 +130,12 @@
<wsdl:message name="IEDMIService_SetAttributeValue_OutputMessage"> <wsdl:message name="IEDMIService_SetAttributeValue_OutputMessage">
<wsdl:part name="parameters" element="tns:SetAttributeValueResponse" /> <wsdl:part name="parameters" element="tns:SetAttributeValueResponse" />
</wsdl:message> </wsdl:message>
<wsdl:message name="IEDMIService_ImportFile_InputMessage">
<wsdl:part name="parameters" element="tns:ImportFile" />
</wsdl:message>
<wsdl:message name="IEDMIService_ImportFile_OutputMessage">
<wsdl:part name="parameters" element="tns:ImportFileResponse" />
</wsdl:message>
<wsdl:message name="DocumentStreamRequest"> <wsdl:message name="DocumentStreamRequest">
<wsdl:part name="parameters" element="tns:DocumentStreamRequest" /> <wsdl:part name="parameters" element="tns:DocumentStreamRequest" />
</wsdl:message> </wsdl:message>
@ -230,6 +240,10 @@
<wsdl:input wsaw:Action="http://DigitalData.Services.EDMIService/IEDMIService/SetAttributeValue" message="tns:IEDMIService_SetAttributeValue_InputMessage" /> <wsdl:input wsaw:Action="http://DigitalData.Services.EDMIService/IEDMIService/SetAttributeValue" message="tns:IEDMIService_SetAttributeValue_InputMessage" />
<wsdl:output wsaw:Action="http://DigitalData.Services.EDMIService/IEDMIService/SetAttributeValueResponse" message="tns:IEDMIService_SetAttributeValue_OutputMessage" /> <wsdl:output wsaw:Action="http://DigitalData.Services.EDMIService/IEDMIService/SetAttributeValueResponse" message="tns:IEDMIService_SetAttributeValue_OutputMessage" />
</wsdl:operation> </wsdl:operation>
<wsdl:operation name="ImportFile">
<wsdl:input wsaw:Action="http://DigitalData.Services.EDMIService/IEDMIService/ImportFile" message="tns:IEDMIService_ImportFile_InputMessage" />
<wsdl:output wsaw:Action="http://DigitalData.Services.EDMIService/IEDMIService/ImportFileResponse" message="tns:IEDMIService_ImportFile_OutputMessage" />
</wsdl:operation>
<wsdl:operation name="GetFileByObjectId"> <wsdl:operation name="GetFileByObjectId">
<wsdl:input wsaw:Action="http://DigitalData.Services.EDMIService/IEDMIService/GetFileByObjectId" name="DocumentStreamRequest" message="tns:DocumentStreamRequest" /> <wsdl:input wsaw:Action="http://DigitalData.Services.EDMIService/IEDMIService/GetFileByObjectId" name="DocumentStreamRequest" message="tns:DocumentStreamRequest" />
<wsdl:output wsaw:Action="http://DigitalData.Services.EDMIService/IEDMIService/GetFileByObjectIdResponse" name="DocumentStreamResponse" message="tns:DocumentStreamResponse" /> <wsdl:output wsaw:Action="http://DigitalData.Services.EDMIService/IEDMIService/GetFileByObjectIdResponse" name="DocumentStreamResponse" message="tns:DocumentStreamResponse" />

View File

@ -3,6 +3,7 @@
<xs:import namespace="http://schemas.datacontract.org/2004/07/DigitalData.Services.EDMIService.Messages" /> <xs:import namespace="http://schemas.datacontract.org/2004/07/DigitalData.Services.EDMIService.Messages" />
<xs:import namespace="http://schemas.datacontract.org/2004/07/DigitalData.Services.EDMIService.Methods.NewFile" /> <xs:import namespace="http://schemas.datacontract.org/2004/07/DigitalData.Services.EDMIService.Methods.NewFile" />
<xs:import namespace="http://schemas.datacontract.org/2004/07/DigitalData.Services.EDMIService.Methods.SetAttributeValue" /> <xs:import namespace="http://schemas.datacontract.org/2004/07/DigitalData.Services.EDMIService.Methods.SetAttributeValue" />
<xs:import namespace="http://schemas.datacontract.org/2004/07/DigitalData.Services.EDMIService.Methods.GlobalIndexer.ImportFile" />
<xs:import namespace="http://schemas.microsoft.com/Message" /> <xs:import namespace="http://schemas.microsoft.com/Message" />
<xs:import namespace="http://schemas.datacontract.org/2004/07/DigitalData.Modules.EDMI.API" /> <xs:import namespace="http://schemas.datacontract.org/2004/07/DigitalData.Modules.EDMI.API" />
<xs:element name="Heartbeat"> <xs:element name="Heartbeat">
@ -187,6 +188,20 @@
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
<xs:element name="ImportFile">
<xs:complexType>
<xs:sequence>
<xs:element xmlns:q15="http://schemas.datacontract.org/2004/07/DigitalData.Services.EDMIService.Methods.GlobalIndexer.ImportFile" minOccurs="0" name="Data" nillable="true" type="q15:ImportFileRequest" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="ImportFileResponse">
<xs:complexType>
<xs:sequence>
<xs:element xmlns:q16="http://schemas.datacontract.org/2004/07/DigitalData.Services.EDMIService.Methods.GlobalIndexer.ImportFile" minOccurs="0" name="ImportFileResult" nillable="true" type="q16:ImportFileResponse" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="DocumentStreamRequest"> <xs:element name="DocumentStreamRequest">
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:sequence>
@ -197,7 +212,7 @@
<xs:element name="DocumentStreamResponse"> <xs:element name="DocumentStreamResponse">
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:sequence>
<xs:element xmlns:q15="http://schemas.microsoft.com/Message" name="FileContents" type="q15:StreamBody" /> <xs:element xmlns:q17="http://schemas.microsoft.com/Message" name="FileContents" type="q17:StreamBody" />
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
@ -213,7 +228,7 @@
<xs:element name="DocumentInfoResponse"> <xs:element name="DocumentInfoResponse">
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:sequence>
<xs:element xmlns:q16="http://schemas.datacontract.org/2004/07/DigitalData.Modules.EDMI.API" minOccurs="0" name="FileRight" type="q16:Rights.AccessRight" /> <xs:element xmlns:q18="http://schemas.datacontract.org/2004/07/DigitalData.Modules.EDMI.API" minOccurs="0" name="FileRight" type="q18:Rights.AccessRight" />
<xs:element minOccurs="0" name="FullPath" nillable="true" type="xs:string" /> <xs:element minOccurs="0" name="FullPath" nillable="true" type="xs:string" />
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>

View File

@ -32,7 +32,11 @@
<MetadataFile FileName="DigitalData.Services.EDMIService.Exceptions.xsd" MetadataType="Schema" ID="57cf2e83-7c36-485a-90c3-0bc4a1748882" SourceId="1" SourceUrl="net.tcp://172.24.12.39:9000/DigitalData/Services/Main/mex" /> <MetadataFile FileName="DigitalData.Services.EDMIService.Exceptions.xsd" MetadataType="Schema" ID="57cf2e83-7c36-485a-90c3-0bc4a1748882" SourceId="1" SourceUrl="net.tcp://172.24.12.39:9000/DigitalData/Services/Main/mex" />
<MetadataFile FileName="DigitalData.Services.EDMIService.Methods.NewFile.xsd" MetadataType="Schema" ID="4904e1c4-87d9-4aae-81a8-71fa8354ae1e" SourceId="1" SourceUrl="net.tcp://172.24.12.39:9000/DigitalData/Services/Main/mex" /> <MetadataFile FileName="DigitalData.Services.EDMIService.Methods.NewFile.xsd" MetadataType="Schema" ID="4904e1c4-87d9-4aae-81a8-71fa8354ae1e" SourceId="1" SourceUrl="net.tcp://172.24.12.39:9000/DigitalData/Services/Main/mex" />
<MetadataFile FileName="DigitalData.Services.EDMIService.Methods.xsd" MetadataType="Schema" ID="e00601d3-b9d7-40f2-b8be-337df13c7172" SourceId="1" SourceUrl="net.tcp://172.24.12.39:9000/DigitalData/Services/Main/mex" /> <MetadataFile FileName="DigitalData.Services.EDMIService.Methods.xsd" MetadataType="Schema" ID="e00601d3-b9d7-40f2-b8be-337df13c7172" SourceId="1" SourceUrl="net.tcp://172.24.12.39:9000/DigitalData/Services/Main/mex" />
<MetadataFile FileName="System.IO.xsd" MetadataType="Schema" ID="88cf8e31-2b3d-4d1a-9172-e7b0ea930e93" SourceId="1" SourceUrl="net.tcp://172.24.12.39:9000/DigitalData/Services/Main/mex" />
<MetadataFile FileName="DigitalData.Modules.ZooFlow.State.xsd" MetadataType="Schema" ID="c9ca2958-d16e-444e-ac34-40fc3c6a86cb" SourceId="1" SourceUrl="net.tcp://172.24.12.39:9000/DigitalData/Services/Main/mex" />
<MetadataFile FileName="DigitalData.Services.EDMIService.Methods.SetAttributeValue.xsd" MetadataType="Schema" ID="a34a2b84-4efd-4be1-83ee-bcb340176a49" SourceId="1" SourceUrl="net.tcp://172.24.12.39:9000/DigitalData/Services/Main/mex" /> <MetadataFile FileName="DigitalData.Services.EDMIService.Methods.SetAttributeValue.xsd" MetadataType="Schema" ID="a34a2b84-4efd-4be1-83ee-bcb340176a49" SourceId="1" SourceUrl="net.tcp://172.24.12.39:9000/DigitalData/Services/Main/mex" />
<MetadataFile FileName="DigitalData.Services.EDMIService.Methods.GlobalIndexer.ImportFile.xsd" MetadataType="Schema" ID="4c9227ac-82b3-4aff-bcb3-eab453dc69c5" SourceId="1" SourceUrl="net.tcp://172.24.12.39:9000/DigitalData/Services/Main/mex" />
<MetadataFile FileName="Arrays.xsd" MetadataType="Schema" ID="74eac9b3-9049-499b-bf42-5e443530645c" SourceId="1" SourceUrl="net.tcp://172.24.12.39:9000/DigitalData/Services/Main/mex" />
<MetadataFile FileName="Message.xsd" MetadataType="Schema" ID="2589e82f-d68f-4843-b153-a80edf895f82" SourceId="1" SourceUrl="net.tcp://172.24.12.39:9000/DigitalData/Services/Main/mex" /> <MetadataFile FileName="Message.xsd" MetadataType="Schema" ID="2589e82f-d68f-4843-b153-a80edf895f82" SourceId="1" SourceUrl="net.tcp://172.24.12.39:9000/DigitalData/Services/Main/mex" />
<MetadataFile FileName="DigitalData.Modules.EDMI.API.xsd" MetadataType="Schema" ID="4eca5a54-795a-4e5b-a3b1-10c24930efec" SourceId="1" SourceUrl="net.tcp://172.24.12.39:9000/DigitalData/Services/Main/mex" /> <MetadataFile FileName="DigitalData.Modules.EDMI.API.xsd" MetadataType="Schema" ID="4eca5a54-795a-4e5b-a3b1-10c24930efec" SourceId="1" SourceUrl="net.tcp://172.24.12.39:9000/DigitalData/Services/Main/mex" />
</Metadata> </Metadata>

View File

@ -25,6 +25,7 @@ Namespace EDMIServiceReference
System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.NonQueryResult)), _ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.NonQueryResult)), _
System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.NewFileResponse)), _ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.NewFileResponse)), _
System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.SetAttributeValueResponse)), _ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.SetAttributeValueResponse)), _
System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.ImportFileResponse)), _
System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.TableResult))> _ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.TableResult))> _
Partial Public Class BaseResponse Partial Public Class BaseResponse
Inherits Object Inherits Object
@ -118,8 +119,16 @@ Namespace EDMIServiceReference
System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.NewFileRequest)), _ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.NewFileRequest)), _
System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.NewFileResponse)), _ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.NewFileResponse)), _
System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.FileProperties)), _ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.FileProperties)), _
System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.UserAttributeValue())), _
System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.UserAttributeValue)), _
System.Runtime.Serialization.KnownTypeAttribute(GetType(System.IO.FileInfo)), _
System.Runtime.Serialization.KnownTypeAttribute(GetType(System.IO.FileSystemInfo)), _
System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.UserState)), _
System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.SetAttributeValueRequest)), _ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.SetAttributeValueRequest)), _
System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.SetAttributeValueResponse)), _ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.SetAttributeValueResponse)), _
System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.ImportFileRequest)), _
System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.ImportFileResponse)), _
System.Runtime.Serialization.KnownTypeAttribute(GetType(String())), _
System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.RightsAccessRight))> _ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.RightsAccessRight))> _
Partial Public Class ScalarResult Partial Public Class ScalarResult
Inherits EDMIServiceReference.BaseResponse Inherits EDMIServiceReference.BaseResponse
@ -200,6 +209,31 @@ Namespace EDMIServiceReference
End Property End Property
End Class End Class
<System.Diagnostics.DebuggerStepThroughAttribute(), _
System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0"), _
System.Runtime.Serialization.DataContractAttribute(Name:="ImportFileResponse", [Namespace]:="http://schemas.datacontract.org/2004/07/DigitalData.Services.EDMIService.Methods."& _
"GlobalIndexer.ImportFile"), _
System.SerializableAttribute()> _
Partial Public Class ImportFileResponse
Inherits EDMIServiceReference.BaseResponse
<System.Runtime.Serialization.OptionalFieldAttribute()> _
Private ObjectIdField As Long
<System.Runtime.Serialization.DataMemberAttribute()> _
Public Property ObjectId() As Long
Get
Return Me.ObjectIdField
End Get
Set
If (Me.ObjectIdField.Equals(value) <> true) Then
Me.ObjectIdField = value
Me.RaisePropertyChanged("ObjectId")
End If
End Set
End Property
End Class
<System.Diagnostics.DebuggerStepThroughAttribute(), _ <System.Diagnostics.DebuggerStepThroughAttribute(), _
System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0"), _ System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0"), _
System.Runtime.Serialization.DataContractAttribute(Name:="TableResult", [Namespace]:="http://schemas.datacontract.org/2004/07/DigitalData.Services.EDMIService.Messages"& _ System.Runtime.Serialization.DataContractAttribute(Name:="TableResult", [Namespace]:="http://schemas.datacontract.org/2004/07/DigitalData.Services.EDMIService.Messages"& _
@ -356,14 +390,11 @@ Namespace EDMIServiceReference
<System.Runtime.Serialization.OptionalFieldAttribute()> _ <System.Runtime.Serialization.OptionalFieldAttribute()> _
Private KindTypeField As String Private KindTypeField As String
<System.Runtime.Serialization.OptionalFieldAttribute()> _
Private LanguageField As String
<System.Runtime.Serialization.OptionalFieldAttribute()> _ <System.Runtime.Serialization.OptionalFieldAttribute()> _
Private StoreNameField As String Private StoreNameField As String
<System.Runtime.Serialization.OptionalFieldAttribute()> _ <System.Runtime.Serialization.OptionalFieldAttribute()> _
Private WhoField As String Private UserField As EDMIServiceReference.UserState
<Global.System.ComponentModel.BrowsableAttribute(false)> _ <Global.System.ComponentModel.BrowsableAttribute(false)> _
Public Property ExtensionData() As System.Runtime.Serialization.ExtensionDataObject Implements System.Runtime.Serialization.IExtensibleDataObject.ExtensionData Public Property ExtensionData() As System.Runtime.Serialization.ExtensionDataObject Implements System.Runtime.Serialization.IExtensibleDataObject.ExtensionData
@ -414,19 +445,6 @@ Namespace EDMIServiceReference
End Set End Set
End Property End Property
<System.Runtime.Serialization.DataMemberAttribute()> _
Public Property Language() As String
Get
Return Me.LanguageField
End Get
Set
If (Object.ReferenceEquals(Me.LanguageField, value) <> true) Then
Me.LanguageField = value
Me.RaisePropertyChanged("Language")
End If
End Set
End Property
<System.Runtime.Serialization.DataMemberAttribute()> _ <System.Runtime.Serialization.DataMemberAttribute()> _
Public Property StoreName() As String Public Property StoreName() As String
Get Get
@ -441,14 +459,14 @@ Namespace EDMIServiceReference
End Property End Property
<System.Runtime.Serialization.DataMemberAttribute()> _ <System.Runtime.Serialization.DataMemberAttribute()> _
Public Property Who() As String Public Property User() As EDMIServiceReference.UserState
Get Get
Return Me.WhoField Return Me.UserField
End Get End Get
Set Set
If (Object.ReferenceEquals(Me.WhoField, value) <> true) Then If (Object.ReferenceEquals(Me.UserField, value) <> true) Then
Me.WhoField = value Me.UserField = value
Me.RaisePropertyChanged("Who") Me.RaisePropertyChanged("User")
End If End If
End Set End Set
End Property End Property
@ -489,6 +507,9 @@ Namespace EDMIServiceReference
<System.Runtime.Serialization.OptionalFieldAttribute()> _ <System.Runtime.Serialization.OptionalFieldAttribute()> _
Private FileImportedAtField As Date Private FileImportedAtField As Date
<System.Runtime.Serialization.OptionalFieldAttribute()> _
Private FileInfoRawField As System.IO.FileInfo
<System.Runtime.Serialization.OptionalFieldAttribute()> _ <System.Runtime.Serialization.OptionalFieldAttribute()> _
Private FileNameField As String Private FileNameField As String
@ -567,6 +588,19 @@ Namespace EDMIServiceReference
End Set End Set
End Property End Property
<System.Runtime.Serialization.DataMemberAttribute()> _
Public Property FileInfoRaw() As System.IO.FileInfo
Get
Return Me.FileInfoRawField
End Get
Set
If (Object.ReferenceEquals(Me.FileInfoRawField, value) <> true) Then
Me.FileInfoRawField = value
Me.RaisePropertyChanged("FileInfoRaw")
End If
End Set
End Property
<System.Runtime.Serialization.DataMemberAttribute()> _ <System.Runtime.Serialization.DataMemberAttribute()> _
Public Property FileName() As String Public Property FileName() As String
Get Get
@ -590,6 +624,324 @@ Namespace EDMIServiceReference
End Sub End Sub
End Class End Class
<System.Diagnostics.DebuggerStepThroughAttribute(), _
System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0"), _
System.Runtime.Serialization.DataContractAttribute(Name:="UserAttributeValue", [Namespace]:="http://schemas.datacontract.org/2004/07/DigitalData.Services.EDMIService.Methods"), _
System.SerializableAttribute()> _
Partial Public Class UserAttributeValue
Inherits Object
Implements System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged
<System.NonSerializedAttribute()> _
Private extensionDataField As System.Runtime.Serialization.ExtensionDataObject
<System.Runtime.Serialization.OptionalFieldAttribute()> _
Private AttributeIdField As Integer
<System.Runtime.Serialization.OptionalFieldAttribute()> _
Private AttributeNameField As String
<System.Runtime.Serialization.OptionalFieldAttribute()> _
Private AttributeValuesField() As String
<System.Runtime.Serialization.OptionalFieldAttribute()> _
Private ControlNameField As String
<Global.System.ComponentModel.BrowsableAttribute(false)> _
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
<System.Runtime.Serialization.DataMemberAttribute()> _
Public Property AttributeId() As Integer
Get
Return Me.AttributeIdField
End Get
Set
If (Me.AttributeIdField.Equals(value) <> true) Then
Me.AttributeIdField = value
Me.RaisePropertyChanged("AttributeId")
End If
End Set
End Property
<System.Runtime.Serialization.DataMemberAttribute()> _
Public Property AttributeName() As String
Get
Return Me.AttributeNameField
End Get
Set
If (Object.ReferenceEquals(Me.AttributeNameField, value) <> true) Then
Me.AttributeNameField = value
Me.RaisePropertyChanged("AttributeName")
End If
End Set
End Property
<System.Runtime.Serialization.DataMemberAttribute()> _
Public Property AttributeValues() As String()
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
<System.Runtime.Serialization.DataMemberAttribute()> _
Public Property ControlName() As String
Get
Return Me.ControlNameField
End Get
Set
If (Object.ReferenceEquals(Me.ControlNameField, value) <> true) Then
Me.ControlNameField = value
Me.RaisePropertyChanged("ControlName")
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
<System.Diagnostics.DebuggerStepThroughAttribute(), _
System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0"), _
System.Runtime.Serialization.DataContractAttribute(Name:="UserState", [Namespace]:="http://schemas.datacontract.org/2004/07/DigitalData.Modules.ZooFlow.State"), _
System.SerializableAttribute()> _
Partial Public Class UserState
Inherits Object
Implements System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged
<System.NonSerializedAttribute()> _
Private extensionDataField As System.Runtime.Serialization.ExtensionDataObject
<System.Runtime.Serialization.OptionalFieldAttribute()> _
Private DateFormatField As String
<System.Runtime.Serialization.OptionalFieldAttribute()> _
Private EmailField As String
<System.Runtime.Serialization.OptionalFieldAttribute()> _
Private GivenNameField As String
<System.Runtime.Serialization.OptionalFieldAttribute()> _
Private HideBasicConfigField As Boolean
<System.Runtime.Serialization.OptionalFieldAttribute()> _
Private IsAdminField As Boolean
<System.Runtime.Serialization.OptionalFieldAttribute()> _
Private LanguageField As String
<System.Runtime.Serialization.OptionalFieldAttribute()> _
Private LanguageIdField As Integer
<System.Runtime.Serialization.OptionalFieldAttribute()> _
Private MachineNameField As String
<System.Runtime.Serialization.OptionalFieldAttribute()> _
Private ShortNameField As String
<System.Runtime.Serialization.OptionalFieldAttribute()> _
Private SurnameField As String
<System.Runtime.Serialization.OptionalFieldAttribute()> _
Private UserIdField As Integer
<System.Runtime.Serialization.OptionalFieldAttribute()> _
Private UserNameField As String
<Global.System.ComponentModel.BrowsableAttribute(false)> _
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
<System.Runtime.Serialization.DataMemberAttribute()> _
Public Property DateFormat() As String
Get
Return Me.DateFormatField
End Get
Set
If (Object.ReferenceEquals(Me.DateFormatField, value) <> true) Then
Me.DateFormatField = value
Me.RaisePropertyChanged("DateFormat")
End If
End Set
End Property
<System.Runtime.Serialization.DataMemberAttribute()> _
Public Property Email() As String
Get
Return Me.EmailField
End Get
Set
If (Object.ReferenceEquals(Me.EmailField, value) <> true) Then
Me.EmailField = value
Me.RaisePropertyChanged("Email")
End If
End Set
End Property
<System.Runtime.Serialization.DataMemberAttribute()> _
Public Property GivenName() As String
Get
Return Me.GivenNameField
End Get
Set
If (Object.ReferenceEquals(Me.GivenNameField, value) <> true) Then
Me.GivenNameField = value
Me.RaisePropertyChanged("GivenName")
End If
End Set
End Property
<System.Runtime.Serialization.DataMemberAttribute()> _
Public Property HideBasicConfig() As Boolean
Get
Return Me.HideBasicConfigField
End Get
Set
If (Me.HideBasicConfigField.Equals(value) <> true) Then
Me.HideBasicConfigField = value
Me.RaisePropertyChanged("HideBasicConfig")
End If
End Set
End Property
<System.Runtime.Serialization.DataMemberAttribute()> _
Public Property IsAdmin() As Boolean
Get
Return Me.IsAdminField
End Get
Set
If (Me.IsAdminField.Equals(value) <> true) Then
Me.IsAdminField = value
Me.RaisePropertyChanged("IsAdmin")
End If
End Set
End Property
<System.Runtime.Serialization.DataMemberAttribute()> _
Public Property Language() As String
Get
Return Me.LanguageField
End Get
Set
If (Object.ReferenceEquals(Me.LanguageField, value) <> true) Then
Me.LanguageField = value
Me.RaisePropertyChanged("Language")
End If
End Set
End Property
<System.Runtime.Serialization.DataMemberAttribute()> _
Public Property LanguageId() As Integer
Get
Return Me.LanguageIdField
End Get
Set
If (Me.LanguageIdField.Equals(value) <> true) Then
Me.LanguageIdField = value
Me.RaisePropertyChanged("LanguageId")
End If
End Set
End Property
<System.Runtime.Serialization.DataMemberAttribute()> _
Public Property MachineName() As String
Get
Return Me.MachineNameField
End Get
Set
If (Object.ReferenceEquals(Me.MachineNameField, value) <> true) Then
Me.MachineNameField = value
Me.RaisePropertyChanged("MachineName")
End If
End Set
End Property
<System.Runtime.Serialization.DataMemberAttribute()> _
Public Property ShortName() As String
Get
Return Me.ShortNameField
End Get
Set
If (Object.ReferenceEquals(Me.ShortNameField, value) <> true) Then
Me.ShortNameField = value
Me.RaisePropertyChanged("ShortName")
End If
End Set
End Property
<System.Runtime.Serialization.DataMemberAttribute()> _
Public Property Surname() As String
Get
Return Me.SurnameField
End Get
Set
If (Object.ReferenceEquals(Me.SurnameField, value) <> true) Then
Me.SurnameField = value
Me.RaisePropertyChanged("Surname")
End If
End Set
End Property
<System.Runtime.Serialization.DataMemberAttribute()> _
Public Property UserId() As Integer
Get
Return Me.UserIdField
End Get
Set
If (Me.UserIdField.Equals(value) <> true) Then
Me.UserIdField = value
Me.RaisePropertyChanged("UserId")
End If
End Set
End Property
<System.Runtime.Serialization.DataMemberAttribute()> _
Public Property UserName() As String
Get
Return Me.UserNameField
End Get
Set
If (Object.ReferenceEquals(Me.UserNameField, value) <> true) Then
Me.UserNameField = value
Me.RaisePropertyChanged("UserName")
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
<System.Diagnostics.DebuggerStepThroughAttribute(), _ <System.Diagnostics.DebuggerStepThroughAttribute(), _
System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0"), _ System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0"), _
System.Runtime.Serialization.DataContractAttribute(Name:="SetAttributeValueRequest", [Namespace]:="http://schemas.datacontract.org/2004/07/DigitalData.Services.EDMIService.Methods."& _ System.Runtime.Serialization.DataContractAttribute(Name:="SetAttributeValueRequest", [Namespace]:="http://schemas.datacontract.org/2004/07/DigitalData.Services.EDMIService.Methods."& _
@ -702,6 +1054,150 @@ Namespace EDMIServiceReference
End Sub End Sub
End Class End Class
<System.Diagnostics.DebuggerStepThroughAttribute(), _
System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0"), _
System.Runtime.Serialization.DataContractAttribute(Name:="ImportFileRequest", [Namespace]:="http://schemas.datacontract.org/2004/07/DigitalData.Services.EDMIService.Methods."& _
"GlobalIndexer.ImportFile"), _
System.SerializableAttribute()> _
Partial Public Class ImportFileRequest
Inherits Object
Implements System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged
<System.NonSerializedAttribute()> _
Private extensionDataField As System.Runtime.Serialization.ExtensionDataObject
<System.Runtime.Serialization.OptionalFieldAttribute()> _
Private AttributeValuesField() As EDMIServiceReference.UserAttributeValue
<System.Runtime.Serialization.OptionalFieldAttribute()> _
Private BusinessEntityField As String
<System.Runtime.Serialization.OptionalFieldAttribute()> _
Private FileField As EDMIServiceReference.FileProperties
<System.Runtime.Serialization.OptionalFieldAttribute()> _
Private KindTypeField As String
<System.Runtime.Serialization.OptionalFieldAttribute()> _
Private ProfileIdField As Integer
<System.Runtime.Serialization.OptionalFieldAttribute()> _
Private StoreNameField As String
<System.Runtime.Serialization.OptionalFieldAttribute()> _
Private UserField As EDMIServiceReference.UserState
<Global.System.ComponentModel.BrowsableAttribute(false)> _
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
<System.Runtime.Serialization.DataMemberAttribute()> _
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
<System.Runtime.Serialization.DataMemberAttribute()> _
Public Property BusinessEntity() As String
Get
Return Me.BusinessEntityField
End Get
Set
If (Object.ReferenceEquals(Me.BusinessEntityField, value) <> true) Then
Me.BusinessEntityField = value
Me.RaisePropertyChanged("BusinessEntity")
End If
End Set
End Property
<System.Runtime.Serialization.DataMemberAttribute()> _
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
<System.Runtime.Serialization.DataMemberAttribute()> _
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
<System.Runtime.Serialization.DataMemberAttribute()> _
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
<System.Runtime.Serialization.DataMemberAttribute()> _
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
<System.Runtime.Serialization.DataMemberAttribute()> _
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
<System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0"), _ <System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0"), _
System.Runtime.Serialization.DataContractAttribute(Name:="Rights.AccessRight", [Namespace]:="http://schemas.datacontract.org/2004/07/DigitalData.Modules.EDMI.API")> _ System.Runtime.Serialization.DataContractAttribute(Name:="Rights.AccessRight", [Namespace]:="http://schemas.datacontract.org/2004/07/DigitalData.Modules.EDMI.API")> _
Public Enum RightsAccessRight As Integer Public Enum RightsAccessRight As Integer
@ -851,6 +1347,12 @@ Namespace EDMIServiceReference
<System.ServiceModel.OperationContractAttribute(Action:="http://DigitalData.Services.EDMIService/IEDMIService/SetAttributeValue", ReplyAction:="http://DigitalData.Services.EDMIService/IEDMIService/SetAttributeValueResponse")> _ <System.ServiceModel.OperationContractAttribute(Action:="http://DigitalData.Services.EDMIService/IEDMIService/SetAttributeValue", ReplyAction:="http://DigitalData.Services.EDMIService/IEDMIService/SetAttributeValueResponse")> _
Function SetAttributeValueAsync(ByVal Data As EDMIServiceReference.SetAttributeValueRequest) As System.Threading.Tasks.Task(Of EDMIServiceReference.SetAttributeValueResponse) Function SetAttributeValueAsync(ByVal Data As EDMIServiceReference.SetAttributeValueRequest) As System.Threading.Tasks.Task(Of EDMIServiceReference.SetAttributeValueResponse)
<System.ServiceModel.OperationContractAttribute(Action:="http://DigitalData.Services.EDMIService/IEDMIService/ImportFile", ReplyAction:="http://DigitalData.Services.EDMIService/IEDMIService/ImportFileResponse")> _
Function ImportFile(ByVal Data As EDMIServiceReference.ImportFileRequest) As EDMIServiceReference.ImportFileResponse
<System.ServiceModel.OperationContractAttribute(Action:="http://DigitalData.Services.EDMIService/IEDMIService/ImportFile", ReplyAction:="http://DigitalData.Services.EDMIService/IEDMIService/ImportFileResponse")> _
Function ImportFileAsync(ByVal Data As EDMIServiceReference.ImportFileRequest) As System.Threading.Tasks.Task(Of EDMIServiceReference.ImportFileResponse)
'CODEGEN: Der Nachrichtenvertrag wird generiert, da der Wrappername (DocumentStreamRequest) von Nachricht "DocumentStreamRequest" nicht mit dem Standardwert (GetFileByObjectId) übereinstimmt. 'CODEGEN: Der Nachrichtenvertrag wird generiert, da der Wrappername (DocumentStreamRequest) von Nachricht "DocumentStreamRequest" nicht mit dem Standardwert (GetFileByObjectId) übereinstimmt.
<System.ServiceModel.OperationContractAttribute(Action:="http://DigitalData.Services.EDMIService/IEDMIService/GetFileByObjectId", ReplyAction:="http://DigitalData.Services.EDMIService/IEDMIService/GetFileByObjectIdResponse"), _ <System.ServiceModel.OperationContractAttribute(Action:="http://DigitalData.Services.EDMIService/IEDMIService/GetFileByObjectId", ReplyAction:="http://DigitalData.Services.EDMIService/IEDMIService/GetFileByObjectIdResponse"), _
System.ServiceModel.FaultContractAttribute(GetType(EDMIServiceReference.ObjectDoesNotExistFault), Action:="http://DigitalData.Services.EDMIService/IEDMIService/GetFileByObjectIdObjectDoesN"& _ System.ServiceModel.FaultContractAttribute(GetType(EDMIServiceReference.ObjectDoesNotExistFault), Action:="http://DigitalData.Services.EDMIService/IEDMIService/GetFileByObjectIdObjectDoesN"& _
@ -1192,6 +1694,14 @@ Namespace EDMIServiceReference
Return MyBase.Channel.SetAttributeValueAsync(Data) Return MyBase.Channel.SetAttributeValueAsync(Data)
End Function End Function
Public Function ImportFile(ByVal Data As EDMIServiceReference.ImportFileRequest) As EDMIServiceReference.ImportFileResponse Implements EDMIServiceReference.IEDMIService.ImportFile
Return MyBase.Channel.ImportFile(Data)
End Function
Public Function ImportFileAsync(ByVal Data As EDMIServiceReference.ImportFileRequest) As System.Threading.Tasks.Task(Of EDMIServiceReference.ImportFileResponse) Implements EDMIServiceReference.IEDMIService.ImportFileAsync
Return MyBase.Channel.ImportFileAsync(Data)
End Function
<System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)> _ <System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)> _
Function EDMIServiceReference_IEDMIService_GetFileByObjectId(ByVal request As EDMIServiceReference.DocumentStreamRequest) As EDMIServiceReference.DocumentStreamResponse Implements EDMIServiceReference.IEDMIService.GetFileByObjectId Function EDMIServiceReference_IEDMIService_GetFileByObjectId(ByVal request As EDMIServiceReference.DocumentStreamRequest) As EDMIServiceReference.DocumentStreamResponse Implements EDMIServiceReference.IEDMIService.GetFileByObjectId
Return MyBase.Channel.GetFileByObjectId(request) Return MyBase.Channel.GetFileByObjectId(request)

View File

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:ser="http://schemas.microsoft.com/2003/10/Serialization/" xmlns:tns="http://schemas.datacontract.org/2004/07/System.IO" elementFormDefault="qualified" targetNamespace="http://schemas.datacontract.org/2004/07/System.IO" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:import namespace="http://schemas.microsoft.com/2003/10/Serialization/" />
<xs:complexType name="FileInfo">
<xs:complexContent mixed="false">
<xs:extension base="tns:FileSystemInfo" />
</xs:complexContent>
</xs:complexType>
<xs:element name="FileInfo" nillable="true" type="tns:FileInfo" />
<xs:complexType name="FileSystemInfo">
<xs:sequence>
<xs:any minOccurs="0" maxOccurs="unbounded" namespace="##local" processContents="skip" />
</xs:sequence>
<xs:attribute ref="ser:FactoryType" />
</xs:complexType>
<xs:element name="FileSystemInfo" nillable="true" type="tns:FileSystemInfo" />
</xs:schema>

View File

@ -191,6 +191,15 @@
<soap12:body use="literal" /> <soap12:body use="literal" />
</wsdl:output> </wsdl:output>
</wsdl:operation> </wsdl:operation>
<wsdl:operation name="ImportFile">
<soap12:operation soapAction="http://DigitalData.Services.EDMIService/IEDMIService/ImportFile" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GetFileByObjectId"> <wsdl:operation name="GetFileByObjectId">
<soap12:operation soapAction="http://DigitalData.Services.EDMIService/IEDMIService/GetFileByObjectId" style="document" /> <soap12:operation soapAction="http://DigitalData.Services.EDMIService/IEDMIService/GetFileByObjectId" style="document" />
<wsdl:input name="DocumentStreamRequest"> <wsdl:input name="DocumentStreamRequest">

View File

@ -109,6 +109,9 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="app.config" /> <None Include="app.config" />
<None Include="Connected Services\EDMIServiceReference\Arrays.xsd">
<SubType>Designer</SubType>
</None>
<None Include="Connected Services\EDMIServiceReference\DigitalData.Modules.EDMI.API.EDMIServiceReference.DocumentInfoResponse.datasource"> <None Include="Connected Services\EDMIServiceReference\DigitalData.Modules.EDMI.API.EDMIServiceReference.DocumentInfoResponse.datasource">
<DependentUpon>Reference.svcmap</DependentUpon> <DependentUpon>Reference.svcmap</DependentUpon>
</None> </None>
@ -118,6 +121,9 @@
<None Include="Connected Services\EDMIServiceReference\DigitalData.Modules.EDMI.API.EDMIServiceReference.DocumentStreamResponse.datasource"> <None Include="Connected Services\EDMIServiceReference\DigitalData.Modules.EDMI.API.EDMIServiceReference.DocumentStreamResponse.datasource">
<DependentUpon>Reference.svcmap</DependentUpon> <DependentUpon>Reference.svcmap</DependentUpon>
</None> </None>
<None Include="Connected Services\EDMIServiceReference\DigitalData.Modules.EDMI.API.EDMIServiceReference.ImportFileResponse.datasource">
<DependentUpon>Reference.svcmap</DependentUpon>
</None>
<None Include="Connected Services\EDMIServiceReference\DigitalData.Modules.EDMI.API.EDMIServiceReference.NewFileResponse.datasource"> <None Include="Connected Services\EDMIServiceReference\DigitalData.Modules.EDMI.API.EDMIServiceReference.NewFileResponse.datasource">
<DependentUpon>Reference.svcmap</DependentUpon> <DependentUpon>Reference.svcmap</DependentUpon>
</None> </None>
@ -142,12 +148,18 @@
<None Include="Connected Services\EDMIServiceReference\DigitalData.Modules.EDMI.API.xsd"> <None Include="Connected Services\EDMIServiceReference\DigitalData.Modules.EDMI.API.xsd">
<SubType>Designer</SubType> <SubType>Designer</SubType>
</None> </None>
<None Include="Connected Services\EDMIServiceReference\DigitalData.Modules.ZooFlow.State.xsd">
<SubType>Designer</SubType>
</None>
<None Include="Connected Services\EDMIServiceReference\DigitalData.Services.EDMIService.Exceptions.xsd"> <None Include="Connected Services\EDMIServiceReference\DigitalData.Services.EDMIService.Exceptions.xsd">
<SubType>Designer</SubType> <SubType>Designer</SubType>
</None> </None>
<None Include="Connected Services\EDMIServiceReference\DigitalData.Services.EDMIService.Messages.xsd"> <None Include="Connected Services\EDMIServiceReference\DigitalData.Services.EDMIService.Messages.xsd">
<SubType>Designer</SubType> <SubType>Designer</SubType>
</None> </None>
<None Include="Connected Services\EDMIServiceReference\DigitalData.Services.EDMIService.Methods.GlobalIndexer.ImportFile.xsd">
<SubType>Designer</SubType>
</None>
<None Include="Connected Services\EDMIServiceReference\DigitalData.Services.EDMIService.Methods.NewFile.xsd"> <None Include="Connected Services\EDMIServiceReference\DigitalData.Services.EDMIService.Methods.NewFile.xsd">
<SubType>Designer</SubType> <SubType>Designer</SubType>
</None> </None>
@ -171,6 +183,9 @@
<None Include="Connected Services\EDMIServiceReference\System.Data.xsd"> <None Include="Connected Services\EDMIServiceReference\System.Data.xsd">
<SubType>Designer</SubType> <SubType>Designer</SubType>
</None> </None>
<None Include="Connected Services\EDMIServiceReference\System.IO.xsd">
<SubType>Designer</SubType>
</None>
<None Include="Connected Services\EDMIServiceReference\System.xsd"> <None Include="Connected Services\EDMIServiceReference\System.xsd">
<SubType>Designer</SubType> <SubType>Designer</SubType>
</None> </None>

View File

@ -410,9 +410,7 @@ Public Class ImportZUGFeRDFiles
AddRejectedState(oMessageId, "NoFerdsException", " Email enthielt keine ZUGFeRD-Dokumente", "", oSQLTransaction) AddRejectedState(oMessageId, "NoFerdsException", " Email enthielt keine ZUGFeRD-Dokumente", "", oSQLTransaction)
Catch ex As NoFerdsAlternateException Catch ex As NoFerdsAlternateException
' TODO ' TODO: Maybe dont even log this 'error', since it's not really an error and it might happen *A LOT*
' Maybe dont even log this 'error', since it's not really an error
' and it might happen *A LOT*
_logger.Error(ex) _logger.Error(ex)
oMoveDirectory = oArgs.NonZugferdDirectory oMoveDirectory = oArgs.NonZugferdDirectory

View File

@ -0,0 +1,67 @@
Imports System.IO
Imports DigitalData.Modules.Logging
Namespace Modules
Public Class FileInformation
Inherits BaseModule
Implements IModule
Public Const FILE_VALUE_FILEINFO = "FILEINFO"
Public Const FILE_VALUE_FILENAME = "FILENAME"
Public Const FILE_VALUE_EXTENSION = "EXTENSION"
Public Const FILE_VALUE_FILENAME_EXT = "FILENAME_EXT"
Public Const FILE_VALUE_DATE_CREATED = "DATE_CREATED"
Public Const FILE_VALUE_DATE_MODIFIED = "DATE_MODIFIED"
Public Property PatternIdentifier As String = "FILE" Implements IModule.PatternIdentifier
Public Property IsComplex As Boolean = False Implements IModule.IsComplex
Public Sub New(pLogConfig As LogConfig)
MyBase.New(pLogConfig)
End Sub
Public Function Replace(pInput As String, pReplaceMap As Dictionary(Of String, Object)) As String Implements IModule.Replace
Dim oResult = pInput
Dim oCounter = 0
Dim oFileInfo As FileInfo = pReplaceMap.Item(FILE_VALUE_FILEINFO)
' Replace Filename without extension
While ContainsPatternAndValue(oResult, PatternIdentifier, FILE_VALUE_FILENAME)
Dim oFilenameWithoutExtension = Path.GetFileNameWithoutExtension(oFileInfo.Name)
oResult = ReplacePattern(oResult, PatternIdentifier, oFilenameWithoutExtension)
IncrementCounterOrThrow(oCounter)
End While
' Replace Filename with extension
While ContainsPatternAndValue(oResult, PatternIdentifier, FILE_VALUE_FILENAME_EXT)
Dim oFilename As String = oFileInfo.Name
oResult = ReplacePattern(oResult, PatternIdentifier, oFilename)
IncrementCounterOrThrow(oCounter)
End While
' Replace Extension
While ContainsPatternAndValue(oResult, PatternIdentifier, FILE_VALUE_FILENAME_EXT)
Dim oExtension As String = oFileInfo.Extension.Substring(1)
oResult = ReplacePattern(oResult, PatternIdentifier, oExtension)
IncrementCounterOrThrow(oCounter)
End While
' Replace creation date
While ContainsPatternAndValue(oResult, PatternIdentifier, FILE_VALUE_DATE_CREATED)
Dim oDateCreated = oFileInfo.CreationTime.ToString("yyyy-MM-dd")
oResult = ReplacePattern(oResult, PatternIdentifier, oDateCreated)
IncrementCounterOrThrow(oCounter)
End While
' Replace last modification date
While ContainsPatternAndValue(oResult, PatternIdentifier, FILE_VALUE_DATE_CREATED)
Dim oDateModified = oFileInfo.LastWriteTime.ToString("yyyy-MM-dd")
oResult = ReplacePattern(oResult, PatternIdentifier, oDateModified)
IncrementCounterOrThrow(oCounter)
End While
Return oResult
End Function
End Class
End Namespace

View File

@ -12,6 +12,9 @@ Namespace Modules
Public Const INT_VALUE_MACHINE = "MACHINE" Public Const INT_VALUE_MACHINE = "MACHINE"
Public Const INT_VALUE_DOMAIN = "DOMAIN" Public Const INT_VALUE_DOMAIN = "DOMAIN"
Public Const INT_VALUE_DATE = "DATE" Public Const INT_VALUE_DATE = "DATE"
Public Const INT_VALUE_DATE_YYYY = "DATE_YYYY"
Public Const INT_VALUE_DATE_MM = "DATE_MM"
Public Const INT_VALUE_DATE_DD = "DATE_DD"
Public Property PatternIdentifier As String = "INT" Implements IModule.PatternIdentifier Public Property PatternIdentifier As String = "INT" Implements IModule.PatternIdentifier
Public Property IsComplex As Boolean = False Implements IModule.IsComplex Public Property IsComplex As Boolean = False Implements IModule.IsComplex
@ -23,30 +26,29 @@ Namespace Modules
Public Function Replace(pInput As String, pReplaceMap As Dictionary(Of String, Object)) As String Implements IModule.Replace Public Function Replace(pInput As String, pReplaceMap As Dictionary(Of String, Object)) As String Implements IModule.Replace
Dim oResult = pInput Dim oResult = pInput
Dim oCounter = 0 Dim oCounter = 0
Dim oNow As Date = Now
' Replace Username(s)
While ContainsPatternAndValue(oResult, PatternIdentifier, INT_VALUE_USERNAME)
oResult = ReplacePattern(oResult, PatternIdentifier, pReplaceMap.Item(INT_VALUE_USERNAME))
IncrementCounterOrThrow(oCounter)
End While
' Replace Machinename(s)
While ContainsPatternAndValue(oResult, PatternIdentifier, INT_VALUE_MACHINE)
oResult = ReplacePattern(oResult, PatternIdentifier, pReplaceMap.Item(INT_VALUE_MACHINE))
IncrementCounterOrThrow(oCounter)
End While
' Replace Domainname(s)
While ContainsPatternAndValue(oResult, PatternIdentifier, INT_VALUE_DOMAIN)
oResult = ReplacePattern(oResult, PatternIdentifier, pReplaceMap.Item(INT_VALUE_DOMAIN))
IncrementCounterOrThrow(oCounter)
End While
' Replace CurrentDate(s) ' Replace CurrentDate(s)
While ContainsPatternAndValue(oResult, PatternIdentifier, INT_VALUE_DATE) While ContainsPatternAndValue(oResult, PatternIdentifier, INT_VALUE_DATE)
oResult = ReplacePattern(oResult, PatternIdentifier, pReplaceMap.Item(INT_VALUE_DATE)) oResult = ReplacePattern(oResult, PatternIdentifier, oNow.ToString("yyyy-MM-dd"))
IncrementCounterOrThrow(oCounter)
End While
' Replace Year(s)
While ContainsPatternAndValue(oResult, PatternIdentifier, INT_VALUE_DATE_YYYY)
oResult = ReplacePattern(oResult, PatternIdentifier, oNow.ToString("yyyy"))
IncrementCounterOrThrow(oCounter)
End While
' Replace Month(s)
While ContainsPatternAndValue(oResult, PatternIdentifier, INT_VALUE_DATE_MM)
oResult = ReplacePattern(oResult, PatternIdentifier, oNow.ToString("MM"))
IncrementCounterOrThrow(oCounter)
End While
' Replace Day(s)
While ContainsPatternAndValue(oResult, PatternIdentifier, INT_VALUE_DATE_DD)
oResult = ReplacePattern(oResult, PatternIdentifier, oNow.ToString("dd"))
IncrementCounterOrThrow(oCounter) IncrementCounterOrThrow(oCounter)
End While End While

View File

@ -81,6 +81,7 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="Constants.vb" /> <Compile Include="Constants.vb" />
<Compile Include="Modules\FileInformation.vb" />
<Compile Include="Modules\IDB.vb" /> <Compile Include="Modules\IDB.vb" />
<Compile Include="Modules\Globix.vb" /> <Compile Include="Modules\Globix.vb" />
<Compile Include="Modules\Windream.vb" /> <Compile Include="Modules\Windream.vb" />

View File

@ -1,4 +1,5 @@
Imports System.Text.RegularExpressions Imports System.IO
Imports System.Text.RegularExpressions
Imports System.Windows.Forms Imports System.Windows.Forms
Imports DigitalData.Controls.LookupGrid Imports DigitalData.Controls.LookupGrid
Imports DigitalData.Modules.Logging Imports DigitalData.Modules.Logging
@ -65,7 +66,8 @@ Public Class Patterns2
New Modules.Internal(LogConfig), New Modules.Internal(LogConfig),
New Modules.Clipboard(LogConfig), New Modules.Clipboard(LogConfig),
New Modules.Controls(LogConfig), New Modules.Controls(LogConfig),
New Modules.User(LogConfig) New Modules.User(LogConfig),
New Modules.FileInformation(LogConfig)
}) })
End Sub End Sub
@ -75,12 +77,12 @@ Public Class Patterns2
IDBActive = pIDBActive IDBActive = pIDBActive
End Sub End Sub
Public Function ReplaceAllValues(pInput As String, pPanel As Panel, pUser As State.UserState) As String Public Function ReplaceAllValues(pInput As String, pPanel As Panel, pUser As State.UserState, pFIleinfo As FileInfo) As String
Dim oResult = pInput Dim oResult = pInput
For Each oModule In Modules For Each oModule In Modules
Try Try
Dim oArgs = GetReplaceMapForModule(oModule, pPanel, pUser) Dim oArgs = GetReplaceMapForModule(oModule, pPanel:=pPanel, pUser:=pUser, pFileInfo:=pFIleinfo)
oResult = oModule.Replace(oResult, oArgs) oResult = oModule.Replace(oResult, oArgs)
Catch ex As Exception Catch ex As Exception
Logger.Warn("Placeholders for String [{0}] could not be replaced completely in Module [{1}]. Skipping.", pInput, oModule.GetType.Name) Logger.Warn("Placeholders for String [{0}] could not be replaced completely in Module [{1}]. Skipping.", pInput, oModule.GetType.Name)
@ -101,6 +103,16 @@ Public Class Patterns2
Return oResult Return oResult
End Function End Function
Public Function ReplaceFileValues(pInput As String, pFileInfo As FileInfo) As String
Dim oResult = pInput
Dim oModule = GetModule(Of Modules.User)()
Dim oArgs = GetReplaceMapForModule(oModule, pFileInfo:=pFileInfo)
oResult = DoReplaceForModule(oResult, oModule, oArgs)
Return oResult
End Function
Public Function ReplaceControlValues(pInput As String, pPanel As Panel) As String Public Function ReplaceControlValues(pInput As String, pPanel As Panel) As String
Dim oResult = pInput Dim oResult = pInput
@ -135,16 +147,18 @@ Public Class Patterns2
Return oResult Return oResult
End Function End Function
Public Function ReplaceGlobixValues(pInput As String) As String Public Function ReplaceGlobixValues(pInput As String, pGlobixIndexes As Dictionary(Of String, List(Of String))) As String
Dim oResult = pInput Dim oResult = pInput
Dim oGlobixModule = GetModule(Of Modules.Globix)() Dim oGlobixModule = GetModule(Of Modules.Globix)()
Dim oGlobixArgs = GetReplaceMapForModule(oGlobixModule) Dim oGlobixArgs = GetReplaceMapForModule(oGlobixModule, pGlobixIndexes:=pGlobixIndexes)
oResult = DoReplaceForModule(oResult, oGlobixModule, oGlobixArgs) oResult = DoReplaceForModule(oResult, oGlobixModule, oGlobixArgs)
Return oResult Return oResult
End Function End Function
Private Function DoReplaceForModule(pInput As String, pModule As IModule, pArgs As Dictionary(Of String, Object)) As String Private Function DoReplaceForModule(pInput As String, pModule As IModule, pArgs As Dictionary(Of String, Object)) As String
Try Try
pInput = pModule.Replace(pInput, pArgs) pInput = pModule.Replace(pInput, pArgs)
@ -166,7 +180,8 @@ Public Class Patterns2
Optional pPanel As Panel = Nothing, Optional pPanel As Panel = Nothing,
Optional pUser As State.UserState = Nothing, Optional pUser As State.UserState = Nothing,
Optional pWMObject As WMObject = Nothing, Optional pWMObject As WMObject = Nothing,
Optional pGlobixIndexes As Dictionary(Of String, List(Of String)) = Nothing Optional pGlobixIndexes As Dictionary(Of String, List(Of String)) = Nothing,
Optional pFileInfo As FileInfo = Nothing
) As Dictionary(Of String, Object) ) As Dictionary(Of String, Object)
Dim oArgs As New Dictionary(Of String, Object) Dim oArgs As New Dictionary(Of String, Object)
@ -177,12 +192,9 @@ Public Class Patterns2
Logger.Error(ex) Logger.Error(ex)
End Try End Try
ElseIf TypeOf pModule Is Modules.Internal Then ElseIf TypeOf pModule Is Modules.FileInformation Then
Try Try
oArgs.Add(Patterns.Modules.Internal.INT_VALUE_USERNAME, System.Environment.UserName) oArgs.Add(Patterns.Modules.FileInformation.FILE_VALUE_FILEINFO, pFileInfo)
oArgs.Add(Patterns.Modules.Internal.INT_VALUE_MACHINE, System.Environment.MachineName)
oArgs.Add(Patterns.Modules.Internal.INT_VALUE_DOMAIN, System.Environment.UserDomainName)
oArgs.Add(Patterns.Modules.Internal.INT_VALUE_DATE, Now.ToShortDateString)
Catch ex As Exception Catch ex As Exception
Logger.Error(ex) Logger.Error(ex)
End Try End Try

View File

@ -32,12 +32,11 @@ Namespace State
End Sub End Sub
''' <summary> ''' <summary>
''' Initialize user object with user id. Mandatory for sending user data between systems. ''' Initialize user object with user name. Mandatory for sending user data between systems.
''' </summary> ''' </summary>
''' <param name="pUserId"></param> Public Sub New(pUserName As String)
Public Sub New(pUserId As Integer)
MyBase.New() MyBase.New()
UserId = pUserId UserName = pUserName
End Sub End Sub
End Class End Class
End Namespace End Namespace

View File

@ -8,4 +8,14 @@ Public Class BaseClass
LogConfig = pLogConfig LogConfig = pLogConfig
Logger = pLogConfig.GetLogger() Logger = pLogConfig.GetLogger()
End Sub End Sub
Public Sub LogAndThrow(pMessage As String)
Logger.Warn(pMessage)
Throw New ApplicationException(pMessage)
End Sub
Public Sub LogAndThrow(pException As Exception, pMessage As String)
Logger.Error(pException)
Throw New ApplicationException(pMessage, pException)
End Sub
End Class End Class

View File

@ -15,14 +15,4 @@ Public MustInherit Class BaseMethod
Helpers = New Helpers(pLogConfig, pMSSQLServer) Helpers = New Helpers(pLogConfig, pMSSQLServer)
GlobalState = pGlobalState GlobalState = pGlobalState
End Sub End Sub
Public Sub LogAndThrow(pMessage As String)
Logger.Warn(pMessage)
Throw New ApplicationException(pMessage)
End Sub
Public Sub LogAndThrow(pException As Exception, pMessage As String)
Logger.Error(pException)
Throw New ApplicationException(pMessage, pException)
End Sub
End Class End Class

View File

@ -138,9 +138,14 @@
<Compile Include="Methods\GetDatatableFromCache\GetDatatableFromCacheMethod.vb" /> <Compile Include="Methods\GetDatatableFromCache\GetDatatableFromCacheMethod.vb" />
<Compile Include="Methods\GetDatatableFromCache\GetDatatableFromCacheRequest.vb" /> <Compile Include="Methods\GetDatatableFromCache\GetDatatableFromCacheRequest.vb" />
<Compile Include="Methods\GetDatatableFromCache\GetDatatableFromCacheResponse.vb" /> <Compile Include="Methods\GetDatatableFromCache\GetDatatableFromCacheResponse.vb" />
<Compile Include="Methods\GlobalIndexer\AutomaticIndex.vb" />
<Compile Include="Methods\GlobalIndexer\BaseIndex.vb" />
<Compile Include="Methods\GlobalIndexer\ImportFile\Steps\AutomaticIndexing.vb" />
<Compile Include="Methods\GlobalIndexer\ImportFile\ImportFileMethod.vb" /> <Compile Include="Methods\GlobalIndexer\ImportFile\ImportFileMethod.vb" />
<Compile Include="Methods\GlobalIndexer\ImportFile\ImportFileRequest.vb" /> <Compile Include="Methods\GlobalIndexer\ImportFile\ImportFileRequest.vb" />
<Compile Include="Methods\GlobalIndexer\ImportFile\ImportFileResponse.vb" /> <Compile Include="Methods\GlobalIndexer\ImportFile\ImportFileResponse.vb" />
<Compile Include="Methods\GlobalIndexer\ImportFile\Steps\PostProcessing.vb" />
<Compile Include="Methods\GlobalIndexer\ManualIndex.vb" />
<Compile Include="Methods\NewFile\NewFileMethod.vb" /> <Compile Include="Methods\NewFile\NewFileMethod.vb" />
<Compile Include="Methods\NewFile\NewFileRequest.vb" /> <Compile Include="Methods\NewFile\NewFileRequest.vb" />
<Compile Include="Methods\NewFile\NewFileResponse.vb" /> <Compile Include="Methods\NewFile\NewFileResponse.vb" />
@ -245,6 +250,10 @@
<Project>{7c3b0c7e-59fe-4e1a-a655-27ae119f9444}</Project> <Project>{7c3b0c7e-59fe-4e1a-a655-27ae119f9444}</Project>
<Name>Patterns</Name> <Name>Patterns</Name>
</ProjectReference> </ProjectReference>
<ProjectReference Include="..\Modules.ZooFlow\ZooFlow.vbproj">
<Project>{81cac44f-3711-4c8f-ae98-e02a7448782a}</Project>
<Name>ZooFlow</Name>
</ProjectReference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<BootstrapperPackage Include=".NETFramework,Version=v4.6.1"> <BootstrapperPackage Include=".NETFramework,Version=v4.6.1">

View File

@ -1,4 +1,6 @@
Imports DigitalData.Modules.Database Imports System.Data.SqlClient
Imports DigitalData.Modules.Database
Imports DigitalData.Modules.Language
Imports DigitalData.Modules.Logging Imports DigitalData.Modules.Logging
Public Class GlobalState Public Class GlobalState
@ -8,6 +10,7 @@ Public Class GlobalState
Private ReadOnly _MSSQL_ECM As MSSQLServer Private ReadOnly _MSSQL_ECM As MSSQLServer
Public Property ObjectStores As New List(Of ObjectStore) Public Property ObjectStores As New List(Of ObjectStore)
Public Property Connections As New List(Of DatabaseConnection)
Public Property TableStore As New DataSet Public Property TableStore As New DataSet
@ -18,8 +21,33 @@ Public Class GlobalState
_MSSQL_ECM = MSSQL_ECM _MSSQL_ECM = MSSQL_ECM
End Sub End Sub
Public Function GetObjectStore(pName As String) As ObjectStore
Return ObjectStores.
Where(Function(store) store.Title.ToUpper = pName.ToUpper).
FirstOrDefault()
End Function
Public Function GetConnection(pConnectionId As Long) As DatabaseConnection
Return Connections.
Where(Function(conn) conn.Id = pConnectionId).
FirstOrDefault()
End Function
Public Function GetConnectionString(pConnectionId As Long) As String
Dim oConnection = GetConnection(pConnectionId)
Dim oBuilder As New SqlConnectionStringBuilder With {
.DataSource = oConnection.Server,
.InitialCatalog = oConnection.Database,
.UserID = oConnection.Username,
.Password = MSSQLServer.DecryptConnectionString(oConnection.Password)
}
Return oBuilder.ToString
End Function
Public Sub LoadObjectStores() Public Sub LoadObjectStores()
_Logger.Debug("Loading Object Stores") _Logger.Info("Loading Object Stores")
Try Try
Dim oSQL As String = "SELECT * FROM VWIDB_OBJECTSTORE" Dim oSQL As String = "SELECT * FROM VWIDB_OBJECTSTORE"
Dim oDatatable As DataTable = _MSSQL_IDB.GetDatatable(oSQL) Dim oDatatable As DataTable = _MSSQL_IDB.GetDatatable(oSQL)
@ -43,11 +71,34 @@ Public Class GlobalState
End Try End Try
End Sub End Sub
Public Function GetObjectStore(Name As String) As ObjectStore Public Sub LoadConnections()
Return ObjectStores. _Logger.Info("Loading Database Connections")
Where(Function(o) o.Title.ToUpper = Name.ToUpper). Try
FirstOrDefault() Dim oSQL As String = "SELECT * FROM TBDD_CONNECTION"
End Function Dim oDatatable As DataTable = _MSSQL_ECM.GetDatatable(oSQL)
Connections.Clear()
_Logger.Info("Found [{0}] Connections", oDatatable.Rows.Count)
For Each oRow As DataRow In oDatatable.Rows
Dim oConnection As New DatabaseConnection() With {
.Id = oRow.ItemEx(Of Integer)("GUID"),
.Active = oRow.ItemEx(Of Boolean)("AKTIV"),
.Database = oRow.ItemEx(Of String)("DATENBANK"),
.Title = oRow.ItemEx(Of String)("BEZEICHNUNG"),
.Password = oRow.ItemEx(Of String)("PASSWORD"),
.Provider = oRow.ItemEx(Of String)("SQL_PROVIDER"),
.Server = oRow.ItemEx(Of String)("SERVER"),
.Username = oRow.ItemEx(Of String)("USERNAME")
}
_Logger.Info("New Connection [{0}]", oConnection.Title)
Connections.Add(oConnection)
Next
Catch ex As Exception
_Logger.Error(ex)
End Try
End Sub
Class ObjectStore Class ObjectStore
Public Id As Long Public Id As Long
@ -55,4 +106,15 @@ Public Class GlobalState
Public IsArchive As Boolean Public IsArchive As Boolean
Public Path As String Public Path As String
End Class End Class
Class DatabaseConnection
Public Id As Long
Public Title As String
Public Provider As String
Public Server As String
Public Database As String
Public Username As String
Public Password As String
Public Active As Boolean
End Class
End Class End Class

View File

@ -37,6 +37,12 @@ Namespace Methods
''' </summary> ''' </summary>
<DataMember> <DataMember>
Public Property FileChecksum As String Public Property FileChecksum As String
''' <summary>
''' The Raw FileInfo Object
''' </summary>
<DataMember>
Public Property FileInfoRaw As IO.FileInfo
End Class End Class
End Namespace End Namespace

View File

@ -0,0 +1,8 @@
Namespace Methods.GlobalIndexer
Public Class AutomaticIndex
Inherits BaseIndex
Public Value As String
End Class
End Namespace

View File

@ -0,0 +1,21 @@
Namespace Methods.GlobalIndexer
Public MustInherit Class BaseIndex
Public Id As Integer
Public Name As String
Public ProfileId As Integer
Public SQLCommand As String
Public SQLConnectionId As Integer
Public Sequence As Integer = 0
Public Function HasSqlCommand() As Boolean
Return Not (
SQLCommand Is Nothing OrElse
SQLCommand = String.Empty OrElse
SQLConnectionId < 0
)
End Function
End Class
End Namespace

View File

@ -12,8 +12,8 @@ Namespace Methods.GlobalIndexer.ImportFile
Private ReadOnly GetDatatable As GetDatatableFromCacheMethod Private ReadOnly GetDatatable As GetDatatableFromCacheMethod
Private Profile As DataRow Private Profile As DataRow
Private ManualIndexes As DataTable Private ManualIndexes As List(Of ManualIndex)
Private AutomaticIndexes As DataTable Private AutomaticIndexes As List(Of AutomaticIndex)
Private ManualIndexesPostProcessing As DataTable Private ManualIndexesPostProcessing As DataTable
Private Const VIEW_PROFILE = "VWGI_DOCTYPE_IDB" Private Const VIEW_PROFILE = "VWGI_DOCTYPE_IDB"
@ -21,10 +21,6 @@ Namespace Methods.GlobalIndexer.ImportFile
Private Const VIEW_INDEX_AUTOMATIC = "VWDDINDEX_AUTOM" Private Const VIEW_INDEX_AUTOMATIC = "VWDDINDEX_AUTOM"
Private Const TABLE_POST_PROCESSING = "TBDD_INDEX_MAN_POSTPROCESSING" Private Const TABLE_POST_PROCESSING = "TBDD_INDEX_MAN_POSTPROCESSING"
Private Const TYPE_VBSPLIT = "VBSPLIT"
Private Const TYPE_VBREPLACE = "VBREPLACE"
Private Const TYPE_REGEXPRESSION = "REG. EXPRESSION"
Public Sub New(pLogConfig As LogConfig, pMSSQLServer As MSSQLServer, pGlobalState As GlobalState) Public Sub New(pLogConfig As LogConfig, pMSSQLServer As MSSQLServer, pGlobalState As GlobalState)
MyBase.New(pLogConfig, pMSSQLServer, pGlobalState) MyBase.New(pLogConfig, pMSSQLServer, pGlobalState)
@ -42,17 +38,25 @@ Namespace Methods.GlobalIndexer.ImportFile
''' </remarks> ''' </remarks>
Public Function Run(pData As ImportFileRequest) Public Function Run(pData As ImportFileRequest)
Try Try
' TODO: Add missing user properties in UserState from TBDD_USER
'pData.User = ResolveUserFromUserName(pData.User.UserName)
LoadIndexes(pData.ProfileId) LoadIndexes(pData.ProfileId)
LoadProfile(pData.ProfileId) LoadProfile(pData.ProfileId)
Dim oFinalAttributes = pData.AttributeValues Dim oFinalAttributes = pData.AttributeValues
Dim oFileName As String = GetFilenameByNameconvention(pData.File.FileName, Profile.Item("NAMENKONVENTION")) Dim oFileName As String = GetFilenameByNameconvention(pData.File.FileName, Profile.Item("NAMENKONVENTION"))
' apply the post processing ' Apply post processing
oFinalAttributes = ApplyManualPostprocessing(oFinalAttributes, ManualIndexesPostProcessing) Dim oPostProcessing = New Steps.PostProcessing(LogConfig, ManualIndexesPostProcessing)
oFinalAttributes = oPostProcessing.ApplyManualPostprocessing(oFinalAttributes)
' TODO: apply the manual attributes ' Apply automatic attributes
oFinalAttributes = ApplyAutomaticeAttributes(oFinalAttributes) Dim oAutomaticIndexing = New Steps.AutomaticIndexing(LogConfig, Database, AutomaticIndexes, GlobalState)
oFinalAttributes = oAutomaticIndexing.ApplyAutomaticeAttributes(oFinalAttributes, pData.File.FileInfoRaw, pData.User)
' Import the file ' Import the file
Dim oNewFile As New NewFileMethod(LogConfig, Database, GlobalState) Dim oNewFile As New NewFileMethod(LogConfig, Database, GlobalState)
@ -60,9 +64,8 @@ Namespace Methods.GlobalIndexer.ImportFile
.File = pData.File, .File = pData.File,
.BusinessEntity = pData.BusinessEntity, .BusinessEntity = pData.BusinessEntity,
.KindType = pData.KindType, .KindType = pData.KindType,
.Language = pData.Language, .StoreName = pData.StoreName,
.Who = pData.Who, .User = pData.User
.StoreName = pData.StoreName
}) })
If oResponse.OK Then If oResponse.OK Then
@ -76,95 +79,12 @@ Namespace Methods.GlobalIndexer.ImportFile
End Try End Try
End Function End Function
Private Function ApplyManualPostprocessing(pManualAttributes As List(Of UserAttributeValue), pPostprocessingSteps As DataTable) As List(Of UserAttributeValue)
Logger.Debug("Start of Method [ApplyManualPostprocessing]")
Dim oAttributes = pManualAttributes
For Each oProcessingRow As DataRow In pPostprocessingSteps.Rows
Dim oIndexId = oProcessingRow.ItemEx(Of Integer)("IDXMAN_ID")
Dim oIndexRow As DataRow = ManualIndexes.Select($"GUID = {oIndexId}").FirstOrDefault()
Dim oIndex As UserAttributeValue = pManualAttributes.
Where(Function(attr) attr.AttributeId = oProcessingRow.ItemEx(Of Integer)("IDXMAN_ID")).
FirstOrDefault()
Dim oValue = GetPostprocessingValue(oIndex.AttributeValues, oIndexRow)
oAttributes.Add(New UserAttributeValue With {
.AttributeId = oIndexId,
.AttributeName = oIndex.AttributeName,
.AttributeValues = oIndex.AttributeValues,
.ControlName = oIndex.ControlName
})
Next
Return oAttributes
End Function
Private Function ApplyAutomaticeAttributes(pManualAttributes As List(Of UserAttributeValue)) As List(Of UserAttributeValue)
Logger.Debug("Start of Method [ApplyAutomaticeAttributes]")
Return pManualAttributes
End Function
Private Function GetPostprocessingValue(pValues As List(Of String), pRow As DataRow)
Logger.Debug("Start of Method [GetPostprocessingValue]")
Dim oType = pRow.Item("TYPE")
Dim oResult As New List(Of String)
Logger.Debug("Type of Postprocessing is [{0}]", oType)
Select Case oType
Case TYPE_VBREPLACE
Dim oFindString = pRow.Item("TEXT1")
Dim oReplaceString = pRow.Item("TEXT2")
Logger.Debug("Replacing [{0}] with [{1}]", oFindString, oReplaceString)
For Each oIndexValue In pValues
Dim oReplaceResult = oIndexValue.Replace(oFindString, oReplaceString)
If oReplaceResult.Equals(oIndexValue) Then
Logger.Debug("Replace did not succeed, ReplaceString was not found.")
Else
Logger.Debug("Replace successful for [{0}].", oIndexValue)
End If
oResult.Add(oReplaceResult)
Next
Case TYPE_VBSPLIT
Dim oSeparator As String = pRow.Item("TEXT1")
Dim oSplitIndex As Integer = 0
Integer.TryParse(pRow.Item("TEXT2"), oSplitIndex)
Logger.Debug("Splitting String at Separator [{0}] and Index [{1}]", oSeparator, oSplitIndex)
For Each oIndexValue In pValues
Dim oSplitted As List(Of String) = oIndexValue.Split(oSeparator).ToList()
Logger.Debug("Split succeeded, resulting list has [{0}] items.", oSplitted.Count)
If oSplitIndex < oSplitted.Count Then
Dim oValue = oSplitted.Item(oSplitIndex)
Logger.Debug("Saving value [{0}] from Index [{1}]", oValue, oSplitIndex)
oResult.Add(oValue)
Else
Logger.Debug("SplitIndex(TEXT2) was out of array bounds. Skipping.")
End If
Next
Case Else
LogAndThrow($"Postprocessing type [{oType}] is not supported!")
End Select
Return oResult
End Function
Private Function GetFilenameByNameconvention(pFileName As String, pNameconvention As String) As String
Private Function GetFilenameByNameconvention(pFileName As String, pNameconvention As String) As String
Return pFileName
End Function End Function
Private Sub LoadIndexes(pProfileId As Integer) Private Sub LoadIndexes(pProfileId As Integer)
@ -213,7 +133,21 @@ Namespace Methods.GlobalIndexer.ImportFile
LogAndThrow(oAutomaticIndexes.ErrorMessage) LogAndThrow(oAutomaticIndexes.ErrorMessage)
End If End If
AutomaticIndexes = oAutomaticIndexes.Table Dim oIndexes As New List(Of AutomaticIndex)
For Each oRow As DataRow In oAutomaticIndexes.Table.Rows
Dim oAutomaticIndex As New AutomaticIndex With {
.Id = oRow.ItemEx(Of Integer)("GUID"),
.Name = oRow.ItemEx(Of String)("INDEXNAME"),
.ProfileId = oRow.ItemEx(Of Integer)("DOCTYPE_ID"),
.SQLCommand = oRow.ItemEx(Of String)("SQL_RESULT"),
.SQLConnectionId = oRow.ItemEx(Of Integer)("CONNECTION_ID"),
.Sequence = oRow.ItemEx(Of String)("SEQUENCE"),
.Value = oRow.ItemEx(Of String)("VALUE")
}
Next
AutomaticIndexes = oIndexes
Catch ex As Exception Catch ex As Exception
LogAndThrow(ex, "Error while automatic loading indexes!") LogAndThrow(ex, "Error while automatic loading indexes!")
End Try End Try
@ -234,7 +168,23 @@ Namespace Methods.GlobalIndexer.ImportFile
LogAndThrow(oManualIndexes.ErrorMessage) LogAndThrow(oManualIndexes.ErrorMessage)
End If End If
ManualIndexes = oManualIndexes.Table Dim oIndexes As New List(Of ManualIndex)
For Each oRow As DataRow In oManualIndexes.Table.Rows
Dim oManualIndex As New ManualIndex With {
.Id = oRow.ItemEx(Of Integer)("GUID"),
.Name = oRow.ItemEx(Of String)("INDEXNAME"),
.ProfileId = oRow.ItemEx(Of Integer)("DOCTYPE_ID"),
.IsOptional = oRow.ItemEx(Of Boolean)("OPTIONAL"),
.IsMultiselect = oRow.ItemEx(Of String)("MULTISELECT"),
.SQLCommand = oRow.ItemEx(Of String)("SQL_RESULT"),
.SQLConnectionId = oRow.ItemEx(Of Integer)("CONNECTION_ID"),
.DefaultValue = oRow.ItemEx(Of String)("DEFAULT_VALUE"),
.DataType = oRow.ItemEx(Of String)("DATA_TYPE")
}
Next
ManualIndexes = oIndexes
Catch ex As Exception Catch ex As Exception
LogAndThrow(ex, "Error while loading indexes!") LogAndThrow(ex, "Error while loading indexes!")
@ -246,10 +196,7 @@ Namespace Methods.GlobalIndexer.ImportFile
Try Try
' Generate a string containing all index ids joined into a string ' Generate a string containing all index ids joined into a string
Dim oIndexIdList As New List(Of Integer) Dim oIndexIdList As List(Of Integer) = ManualIndexes.Select(Function(index) index.Id).ToList()
For Each oRow As DataRow In ManualIndexes.Rows
oIndexIdList.Add(oRow.ItemEx(Of Integer)("GUID"))
Next
Dim oIndexIds As String = String.Join(",", oIndexIdList) Dim oIndexIds As String = String.Join(",", oIndexIdList)
' Load all relevant postprocessing steps ' Load all relevant postprocessing steps

View File

@ -1,4 +1,5 @@
Imports System.Runtime.Serialization Imports System.Runtime.Serialization
Imports DigitalData.Modules.ZooFlow.State
Namespace Methods.GlobalIndexer.ImportFile Namespace Methods.GlobalIndexer.ImportFile
<Serializable> <Serializable>
@ -13,6 +14,7 @@ Namespace Methods.GlobalIndexer.ImportFile
''' <summary> ''' <summary>
''' The ProfileId the file will be imported with ''' The ProfileId the file will be imported with
''' </summary> ''' </summary>
<DataMember>
Public Property ProfileId As Integer Public Property ProfileId As Integer
''' <summary> ''' <summary>
@ -37,18 +39,14 @@ Namespace Methods.GlobalIndexer.ImportFile
''' The attribute values given by the user in the form of ''' The attribute values given by the user in the form of
''' Attribute Name/Attribute Value/ControlName ''' Attribute Name/Attribute Value/ControlName
''' </summary> ''' </summary>
<DataMember>
Public Property AttributeValues As List(Of UserAttributeValue) Public Property AttributeValues As List(Of UserAttributeValue)
''' <summary> ''' <summary>
''' The name of the user importing the file, ex. JenneJ ''' User Importing the file
''' </summary> ''' </summary>
''' <returns></returns>
<DataMember> <DataMember>
Public Property Who As String Public Property User As UserState
''' <summary>
''' The language of the user, ex. de-DE
''' </summary>
<DataMember>
Public Property Language As String
End Class End Class
End Namespace End Namespace

View File

@ -0,0 +1,85 @@
Imports System.IO
Imports DigitalData.Modules.Database
Imports DigitalData.Modules.Logging
Imports DigitalData.Modules.Patterns
Imports DigitalData.Modules.ZooFlow.State
Imports DigitalData.Services.EDMIService.GlobalState
Namespace Methods.GlobalIndexer.ImportFile.Steps
Public Class AutomaticIndexing
Inherits BaseClass
Private ReadOnly GlobalState As GlobalState
Private ReadOnly AutomaticIndexes As List(Of AutomaticIndex)
Private ReadOnly Patterns As Patterns2
Private ReadOnly Database As MSSQLServer
Public Sub New(pLogConfig As LogConfig, pDatabase As MSSQLServer, pAutomaticIndexes As List(Of AutomaticIndex), pGlobalState As GlobalState)
MyBase.New(pLogConfig)
Database = pDatabase
GlobalState = pGlobalState
AutomaticIndexes = pAutomaticIndexes
Patterns = New Patterns2(pLogConfig)
End Sub
Public Function ApplyAutomaticeAttributes(pManualAttributes As List(Of UserAttributeValue), pFileInfo As FileInfo, pUserState As UserState) As List(Of UserAttributeValue)
Logger.Debug("Start of Method [ApplyAutomaticeAttributes]")
Dim oAttributes = pManualAttributes
For Each oAutomaticIndex In AutomaticIndexes
' We add oAttributes from the previous run into the current run so it is in theory possible to reference
' automatic attributes which have been set just before.
Dim oAttribute = ApplyAutomaticIndex(oAutomaticIndex, pFileInfo, pUserState, oAttributes)
oAttributes.Add(oAttribute)
Next
Return oAttributes
End Function
Private Function ApplyAutomaticIndex(pAutomaticIndex As AutomaticIndex, pFileInfo As FileInfo, pUserState As UserState, pAttributes As List(Of UserAttributeValue)) As UserAttributeValue
Dim oAttributeDict = pAttributes.ToDictionary(
Function(attr) attr.AttributeName,
Function(attr) attr.AttributeValues)
' If there is no SQL command, we use the Value property and replace all placeholders in it.
If pAutomaticIndex.HasSqlCommand = False Then
Dim oResult As String = GetPlaceholderValue(pAutomaticIndex.Value, pFileInfo, pUserState, oAttributeDict)
Return New UserAttributeValue With {
.AttributeValues = New List(Of String) From {oResult},
.AttributeName = pAutomaticIndex.Name,
.AttributeId = pAutomaticIndex.Id
}
End If
' Otherwise we will replace placeholders in the SQL command and then execute it
Dim oConnectionString As String = GlobalState.GetConnectionString(pAutomaticIndex.SQLConnectionId)
Dim oFinalSQLCommand = pAutomaticIndex.SQLCommand
oFinalSQLCommand = GetPlaceholderValue(oFinalSQLCommand, pFileInfo, pUserState, oAttributeDict)
' Now we have a SQL command which only contains vector placeholders
' Next, we execute the command to get our result
Dim oValue = Database.GetScalarValueWithConnection(oFinalSQLCommand, oConnectionString)
' TODO: Return multiple values
Return New UserAttributeValue With {
.AttributeValues = New List(Of String) From {oValue},
.AttributeName = pAutomaticIndex.Name,
.AttributeId = pAutomaticIndex.Id
}
End Function
Private Function GetPlaceholderValue(pValue As String, pFileInfo As FileInfo, pUserState As UserState, pAttributes As Dictionary(Of String, List(Of String))) As String
Dim oResult As String = pValue
oResult = Patterns.ReplaceInternalValues(oResult)
oResult = Patterns.ReplaceFileValues(oResult, pFileInfo)
oResult = Patterns.ReplaceUserValues(oResult, pUserState)
oResult = Patterns.ReplaceGlobixValues(oResult, pAttributes)
Return oResult
End Function
End Class
End Namespace

View File

@ -0,0 +1,98 @@
Imports DigitalData.Modules.Logging
Imports DigitalData.Modules.Language
Namespace Methods.GlobalIndexer.ImportFile.Steps
Public Class PostProcessing
Inherits BaseClass
Public Const TYPE_VBSPLIT = "VBSPLIT"
Public Const TYPE_VBREPLACE = "VBREPLACE"
Public Const TYPE_REGEXPRESSION = "REG. EXPRESSION"
Private PostprocessingSteps As DataTable
Public Sub New(pLogConfig As LogConfig, pPostProcessingSteps As DataTable)
MyBase.New(pLogConfig)
PostprocessingSteps = pPostProcessingSteps
End Sub
Public Function ApplyManualPostprocessing(pManualAttributes As List(Of UserAttributeValue)) As List(Of UserAttributeValue)
Logger.Debug("Start of Method [ApplyManualPostprocessing]")
Dim oAttributes = pManualAttributes
For Each oProcessingRow As DataRow In PostprocessingSteps.Rows
Dim oIndexId = oProcessingRow.ItemEx(Of Integer)("IDXMAN_ID")
Dim oIndex As UserAttributeValue = pManualAttributes.
Where(Function(attr) attr.AttributeId = oProcessingRow.ItemEx(Of Integer)("IDXMAN_ID")).
FirstOrDefault()
Dim oValue = GetPostprocessingValue(oIndex.AttributeValues, oProcessingRow)
oAttributes.Add(New UserAttributeValue With {
.AttributeId = oIndexId,
.AttributeName = oIndex.AttributeName,
.AttributeValues = oIndex.AttributeValues,
.ControlName = oIndex.ControlName
})
Next
Return oAttributes
End Function
Public Function GetPostprocessingValue(pValues As List(Of String), pRow As DataRow)
Logger.Debug("Start of Method [GetPostprocessingValue]")
Dim oType = pRow.Item("TYPE")
Dim oResult As New List(Of String)
Logger.Debug("Type of Postprocessing is [{0}]", oType)
Select Case oType
Case TYPE_VBREPLACE
Dim oFindString = pRow.Item("TEXT1")
Dim oReplaceString = pRow.Item("TEXT2")
Logger.Debug("Replacing [{0}] with [{1}]", oFindString, oReplaceString)
For Each oIndexValue In pValues
Dim oReplaceResult = oIndexValue.Replace(oFindString, oReplaceString)
If oReplaceResult.Equals(oIndexValue) Then
Logger.Debug("Replace did not succeed, ReplaceString was not found.")
Else
Logger.Debug("Replace successful for [{0}].", oIndexValue)
End If
oResult.Add(oReplaceResult)
Next
Case TYPE_VBSPLIT
Dim oSeparator As String = pRow.Item("TEXT1")
Dim oSplitIndex As Integer = 0
Integer.TryParse(pRow.Item("TEXT2"), oSplitIndex)
Logger.Debug("Splitting String at Separator [{0}] and Index [{1}]", oSeparator, oSplitIndex)
For Each oIndexValue In pValues
Dim oSplitted As List(Of String) = oIndexValue.Split(oSeparator).ToList()
Logger.Debug("Split succeeded, resulting list has [{0}] items.", oSplitted.Count)
If oSplitIndex < oSplitted.Count Then
Dim oValue = oSplitted.Item(oSplitIndex)
Logger.Debug("Saving value [{0}] from Index [{1}]", oValue, oSplitIndex)
oResult.Add(oValue)
Else
Logger.Debug("SplitIndex(TEXT2) was out of array bounds. Skipping.")
End If
Next
Case Else
LogAndThrow($"Postprocessing type [{oType}] is not supported!")
End Select
Return oResult
End Function
End Class
End Namespace

View File

@ -0,0 +1,12 @@
Namespace Methods.GlobalIndexer
Public Class ManualIndex
Inherits BaseIndex
Public DataType As String
Public IsOptional As Boolean
Public IsMultiselect As Boolean
Public DefaultValue As String
End Class
End Namespace

View File

@ -28,7 +28,7 @@ Public Class NewFileMethod
Try Try
Dim oObjectId = NewObjectId(pData.KindType, pData.BusinessEntity, pData.Who) Dim oObjectId = NewObjectId(pData.KindType, pData.BusinessEntity, pData.User.UserName)
If oObjectId = 0 Then If oObjectId = 0 Then
LogAndThrow("Could not create new ObjectId!") LogAndThrow("Could not create new ObjectId!")
End If End If
@ -107,7 +107,16 @@ Public Class NewFileMethod
Logger.Info("Creating IDB FileObject for ObjectId [{0}].", oObjectId) Logger.Info("Creating IDB FileObject for ObjectId [{0}].", oObjectId)
' Insert into DB ' Insert into DB
Dim oSQL As String = $"EXEC PRIDB_NEW_IDBFO '{oFinalPath}', '{oFileObjectName}', '{oFileObjectExtension}',{oFileObjectSize},'{pData.File.FileChecksum}' ,'{pData.Who}','{oObjectId}',{oStore.Id}" Dim oSQL As String = $"EXEC PRIDB_NEW_IDBFO
'{oFinalPath}',
'{oFileObjectName}',
'{oFileObjectExtension}',
{oFileObjectSize},
'{pData.File.FileChecksum}' ,
'{pData.User.UserName}',
'{oObjectId}',
{oStore.Id}"
Dim oResult As Boolean = Database.ExecuteNonQueryWithConnectionObject(oSQL, Connection, ExternalTransaction, Transaction) Dim oResult As Boolean = Database.ExecuteNonQueryWithConnectionObject(oSQL, Connection, ExternalTransaction, Transaction)
If oResult = False Then If oResult = False Then
@ -131,7 +140,7 @@ Public Class NewFileMethod
Continue For Continue For
End If End If
Dim oSuccess = Helpers.SetAttributeValue(Connection, Transaction, oObjectId, oAttribute.Key, oAttribute.Value, "de-DE", pData.Who) Dim oSuccess = Helpers.SetAttributeValue(Connection, Transaction, oObjectId, oAttribute.Key, oAttribute.Value, pData.User.Language, pData.User.UserName)
If oSuccess Then If oSuccess Then
Logger.Debug("Default Attribute [{0}] written with value [{1}]", oAttribute.Key, oAttribute.Value) Logger.Debug("Default Attribute [{0}] written with value [{1}]", oAttribute.Key, oAttribute.Value)
Else Else

View File

@ -1,4 +1,5 @@
Imports System.Runtime.Serialization Imports System.Runtime.Serialization
Imports DigitalData.Modules.ZooFlow.State
Namespace Methods.NewFile Namespace Methods.NewFile
<Serializable> <Serializable>
@ -26,17 +27,11 @@ Namespace Methods.NewFile
Public Property KindType As String Public Property KindType As String
''' <summary> ''' <summary>
''' The name of the user importing the file, ex. JenneJ ''' User Importing the file
''' </summary>
<DataMember>
Public Property Who As String
''' <summary>
''' The language of the user
''' </summary> ''' </summary>
''' <returns></returns> ''' <returns></returns>
<DataMember> <DataMember>
Public Property Language As String Public Property User As UserState
End Class End Class
End Namespace End Namespace

View File

@ -73,8 +73,9 @@ Public Class WindowsService
_Global = New GlobalState(_LogConfig, _MSSQL_IDB, _MSSQL_ECM) _Global = New GlobalState(_LogConfig, _MSSQL_IDB, _MSSQL_ECM)
_Scheduler = New Scheduler(_LogConfig, _MSSQL_ECM, _Global.TableStore) _Scheduler = New Scheduler(_LogConfig, _MSSQL_ECM, _Global.TableStore)
_Logger.Debug("Loading Objectstores") _Logger.Debug("Loading Global Data")
_Global.LoadObjectStores() _Global.LoadObjectStores()
_Global.LoadConnections()
_Logger.Debug("Starting Scheduler") _Logger.Debug("Starting Scheduler")
_Scheduler.Start() _Scheduler.Start()