diff --git a/Modules.EDMIAPI/Client.vb b/Modules.EDMIAPI/Client.vb
index b3e9ec29..43cc3ee6 100644
--- a/Modules.EDMIAPI/Client.vb
+++ b/Modules.EDMIAPI/Client.vb
@@ -21,6 +21,7 @@ Public Class Client
' Runtime Variables
Private ReadOnly ServerAddress As String
Private ReadOnly ServerPort As Integer
+ Private ClientConfig As ConfigClientConfiguration
' Channel
Private ReadOnly ChannelFactory As ChannelFactory(Of IEDMIServiceChannel)
@@ -32,6 +33,7 @@ Public Class Client
' Public Variables
Public CachedTables As New List(Of String)
+
'''
''' Parse a IPAddress:Port String into its parts
'''
@@ -121,6 +123,12 @@ Public Class Client
Logger.Debug("Opening channel..")
Channel.Open()
+ Dim oResponse = Channel.GetClientConfig()
+ If oResponse.OK Then
+ ClientConfig = oResponse.ClientConfig
+ Else
+ Logger.Warn("Client Configuration could not be loaded: [{0}]", oResponse.ErrorMessage)
+ End If
Logger.Info($"Connection to AppService {ServerAddress} successfully established!")
@@ -146,6 +154,14 @@ Public Class Client
End Try
End Sub
+ Public Function TryGetClientConfig() As ConfigClientConfiguration
+ If ClientConfig Is Nothing Then
+ Throw New ApplicationException("ClientConfig is empty! Please connect to the service before calling this function")
+ End If
+
+ Return ClientConfig
+ End Function
+
Private Async Function UpdateTimer_Elapsed(sender As Object, e As ElapsedEventArgs) As Task Handles UpdateTimer.Elapsed
Try
Dim oTables As String() = Await Channel.GetCachedTablesAsync()
@@ -674,6 +690,62 @@ Public Class Client
End Try
End Function
+ Public Function ExecuteNonQueryFromIDB(pSQL As String, Optional pConnectionId As Integer = 0) As ExecuteNonQueryResponse
+ Try
+ Dim oResponse = Channel.ExecuteNonQuery(New ExecuteNonQueryRequest() With {
+ .SqlCommand = pSQL,
+ .NamedDatabase = DatabaseName.IDB,
+ .ConnectionId = pConnectionId
+ })
+ Return oResponse
+ Catch ex As Exception
+ Logger.Error(ex)
+ Throw ex
+ End Try
+ End Function
+
+ Public Function ExecuteNonQueryFromECM(pSQL As String, Optional pConnectionId As Integer = 0) As ExecuteNonQueryResponse
+ Try
+ Dim oResponse = Channel.ExecuteNonQuery(New ExecuteNonQueryRequest() With {
+ .SqlCommand = pSQL,
+ .NamedDatabase = DatabaseName.ECM,
+ .ConnectionId = pConnectionId
+ })
+ Return oResponse
+ Catch ex As Exception
+ Logger.Error(ex)
+ Throw ex
+ End Try
+ End Function
+
+ Public Async Function ExecuteNonQueryFromIDBAsync(pSQL As String, Optional pConnectionId As Integer = 0) As Task(Of ExecuteNonQueryResponse)
+ Try
+ Dim oResponse = Await Channel.ExecuteNonQueryAsync(New ExecuteNonQueryRequest() With {
+ .SqlCommand = pSQL,
+ .NamedDatabase = DatabaseName.IDB,
+ .ConnectionId = pConnectionId
+ })
+ Return oResponse
+ Catch ex As Exception
+ Logger.Error(ex)
+ Throw ex
+ End Try
+ End Function
+
+ Public Async Function ExecuteNonQueryFromECMAsync(pSQL As String, Optional pConnectionId As Integer = 0) As Task(Of ExecuteNonQueryResponse)
+ Try
+ Dim oResponse = Await Channel.ExecuteNonQueryAsync(New ExecuteNonQueryRequest() With {
+ .SqlCommand = pSQL,
+ .NamedDatabase = DatabaseName.ECM,
+ .ConnectionId = pConnectionId
+ })
+ Return oResponse
+ Catch ex As Exception
+ Logger.Error(ex)
+ Throw ex
+ End Try
+ End Function
+
Public Function GetDatatableByName(DatatableName As String, Optional FilterExpression As String = "", Optional SortByColumn As String = "") As TableResult
Try
Dim oResponse = Channel.ReturnDatatableFromCache(DatatableName, FilterExpression, SortByColumn)
@@ -694,6 +766,8 @@ Public Class Client
End Try
End Function
+
+
'''
''' Return infos about a file object
'''
diff --git a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMI.API.EDMIServiceReference.ExecuteNonQueryResponse.datasource b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMI.API.EDMIServiceReference.ExecuteNonQueryResponse.datasource
new file mode 100644
index 00000000..8bb4d79f
--- /dev/null
+++ b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMI.API.EDMIServiceReference.ExecuteNonQueryResponse.datasource
@@ -0,0 +1,10 @@
+
+
+
+ DigitalData.Modules.EDMI.API.EDMIServiceReference.ExecuteNonQueryResponse, Connected Services.EDMIServiceReference.Reference.vb.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
+
\ No newline at end of file
diff --git a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMI.API.EDMIServiceReference.GetClientConfigResponse.datasource b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMI.API.EDMIServiceReference.GetClientConfigResponse.datasource
new file mode 100644
index 00000000..8d9e62a6
--- /dev/null
+++ b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMI.API.EDMIServiceReference.GetClientConfigResponse.datasource
@@ -0,0 +1,10 @@
+
+
+
+ DigitalData.Modules.EDMI.API.EDMIServiceReference.GetClientConfigResponse, Connected Services.EDMIServiceReference.Reference.vb.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
+
\ No newline at end of file
diff --git a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Messages.xsd b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Messages.xsd
index 0acf5ce9..3a7241eb 100644
--- a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Messages.xsd
+++ b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Messages.xsd
@@ -1,5 +1,13 @@
+
+
+
+
+
+
+
+
@@ -23,14 +31,6 @@
-
-
-
-
-
-
-
-
diff --git a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Methods.Base.GetClientConfig.xsd b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Methods.Base.GetClientConfig.xsd
new file mode 100644
index 00000000..9f121f27
--- /dev/null
+++ b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Methods.Base.GetClientConfig.xsd
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Methods.Database.ExecuteNonQuery.xsd b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Methods.Database.ExecuteNonQuery.xsd
new file mode 100644
index 00000000..145bef4f
--- /dev/null
+++ b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Methods.Database.ExecuteNonQuery.xsd
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Methods.GlobalIndexer.ImportFile.xsd b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Methods.GlobalIndexer.ImportFile.xsd
index dfacd76d..e8a6215e 100644
--- a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Methods.GlobalIndexer.ImportFile.xsd
+++ b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Methods.GlobalIndexer.ImportFile.xsd
@@ -1,13 +1,13 @@
-
+
-
+
-
+
diff --git a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Methods.GetFileObject.xsd b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Methods.IDB.GetFileObject.xsd
similarity index 86%
rename from Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Methods.GetFileObject.xsd
rename to Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Methods.IDB.GetFileObject.xsd
index 5e423071..8d71cf3d 100644
--- a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Methods.GetFileObject.xsd
+++ b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Methods.IDB.GetFileObject.xsd
@@ -1,5 +1,5 @@
-
+
diff --git a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Methods.NewFile.xsd b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Methods.IDB.NewFile.xsd
similarity index 78%
rename from Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Methods.NewFile.xsd
rename to Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Methods.IDB.NewFile.xsd
index 9bbf4d86..b12f9392 100644
--- a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Methods.NewFile.xsd
+++ b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Methods.IDB.NewFile.xsd
@@ -1,12 +1,12 @@
-
-
+
+
-
+
diff --git a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Methods.SetAttributeValue.xsd b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Methods.IDB.SetAttributeValue.xsd
similarity index 83%
rename from Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Methods.SetAttributeValue.xsd
rename to Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Methods.IDB.SetAttributeValue.xsd
index fb7799c9..e8b79472 100644
--- a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Methods.SetAttributeValue.xsd
+++ b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Methods.IDB.SetAttributeValue.xsd
@@ -1,5 +1,5 @@
-
+
diff --git a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Methods.xsd b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Methods.IDB.xsd
similarity index 89%
rename from Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Methods.xsd
rename to Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Methods.IDB.xsd
index 6dfd5893..70b45152 100644
--- a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Methods.xsd
+++ b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Methods.IDB.xsd
@@ -1,5 +1,5 @@
-
+
diff --git a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.wsdl b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.wsdl
index d6ba8df7..a5ca1cd7 100644
--- a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.wsdl
+++ b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.wsdl
@@ -4,21 +4,24 @@
-
-
+
+
+
+
-
-
+
+
+
-
+
-
+
@@ -29,6 +32,12 @@
+
+
+
+
+
+
@@ -59,6 +68,12 @@
+
+
+
+
+
+
@@ -209,6 +224,10 @@
+
+
+
+
@@ -227,6 +246,10 @@
+
+
+
+
diff --git a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.xsd b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.xsd
index ca415ab6..1439c329 100644
--- a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.xsd
+++ b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.xsd
@@ -1,13 +1,15 @@
+
-
-
+
+
+
-
+
@@ -22,6 +24,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
@@ -30,7 +44,7 @@
-
+
@@ -46,35 +60,49 @@
-
+
-
+
-
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -88,7 +116,7 @@
-
+
@@ -102,7 +130,7 @@
-
+
@@ -116,7 +144,7 @@
-
+
@@ -130,7 +158,7 @@
-
+
@@ -144,7 +172,7 @@
-
+
@@ -158,7 +186,7 @@
-
+
@@ -172,7 +200,7 @@
-
+
@@ -186,7 +214,7 @@
-
+
@@ -200,63 +228,63 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -270,7 +298,7 @@
-
+
@@ -286,7 +314,7 @@
-
+
diff --git a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService1.xsd b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService1.xsd
new file mode 100644
index 00000000..95430386
--- /dev/null
+++ b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService1.xsd
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/Reference.svcmap b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/Reference.svcmap
index 656e958c..515a521a 100644
--- a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/Reference.svcmap
+++ b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/Reference.svcmap
@@ -26,21 +26,24 @@
-
+
+
+
-
-
+
+
+
-
+
-
+
diff --git a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/Reference.vb b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/Reference.vb
index 66e70bf4..b1702f42 100644
--- a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/Reference.vb
+++ b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/Reference.vb
@@ -21,15 +21,17 @@ Namespace EDMIServiceReference
System.Runtime.Serialization.DataContractAttribute(Name:="BaseResponse", [Namespace]:="http://schemas.datacontract.org/2004/07/DigitalData.Services.EDMIService.Messages"& _
""), _
System.SerializableAttribute(), _
+ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.TableResult)), _
System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.ScalarResult)), _
System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.NonQueryResult)), _
System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.GetDatatableResponse)), _
System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.GetScalarValueResponse)), _
+ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.ExecuteNonQueryResponse)), _
System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.NewFileResponse)), _
System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.SetAttributeValueResponse)), _
System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.ImportFileResponse)), _
System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.GetFileObjectResponse)), _
- System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.TableResult))> _
+ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.GetClientConfigResponse))> _
Partial Public Class BaseResponse
Inherits Object
Implements System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged
@@ -105,17 +107,44 @@ Namespace EDMIServiceReference
End Sub
End Class
+ _
+ Partial Public Class TableResult
+ Inherits EDMIServiceReference.BaseResponse
+
+ _
+ Private TableField As System.Data.DataTable
+
+ _
+ Public Property Table() As System.Data.DataTable
+ Get
+ Return Me.TableField
+ End Get
+ Set
+ If (Object.ReferenceEquals(Me.TableField, value) <> true) Then
+ Me.TableField = value
+ Me.RaisePropertyChanged("Table")
+ End If
+ End Set
+ End Property
+ End Class
+
_
+ Partial Public Class ExecuteNonQueryResponse
+ Inherits EDMIServiceReference.BaseResponse
+
+ _
+ Private ResultField As Boolean
+
+ _
+ Public Property Result() As Boolean
+ Get
+ Return Me.ResultField
+ End Get
+ Set
+ If (Me.ResultField.Equals(value) <> true) Then
+ Me.ResultField = value
+ Me.RaisePropertyChanged("Result")
+ End If
+ End Set
+ End Property
+ End Class
+
_
Partial Public Class NewFileResponse
Inherits EDMIServiceReference.BaseResponse
@@ -281,7 +341,7 @@ Namespace EDMIServiceReference
_
Partial Public Class SetAttributeValueResponse
Inherits EDMIServiceReference.BaseResponse
@@ -331,7 +391,7 @@ Namespace EDMIServiceReference
_
Partial Public Class GetFileObjectResponse
Inherits EDMIServiceReference.BaseResponse
@@ -355,29 +415,76 @@ Namespace EDMIServiceReference
_
- Partial Public Class TableResult
+ Partial Public Class GetClientConfigResponse
Inherits EDMIServiceReference.BaseResponse
_
- Private TableField As System.Data.DataTable
+ Private ClientConfigField As EDMIServiceReference.ConfigClientConfiguration
_
- Public Property Table() As System.Data.DataTable
+ Public Property ClientConfig() As EDMIServiceReference.ConfigClientConfiguration
Get
- Return Me.TableField
+ Return Me.ClientConfigField
End Get
Set
- If (Object.ReferenceEquals(Me.TableField, value) <> true) Then
- Me.TableField = value
- Me.RaisePropertyChanged("Table")
+ If (Object.ReferenceEquals(Me.ClientConfigField, value) <> true) Then
+ Me.ClientConfigField = value
+ Me.RaisePropertyChanged("ClientConfig")
End If
End Set
End Property
End Class
+ _
+ Partial Public Class ConfigClientConfiguration
+ Inherits Object
+ Implements System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged
+
+ _
+ Private extensionDataField As System.Runtime.Serialization.ExtensionDataObject
+
+ _
+ Private ForceDirectDatabaseAccessField As Boolean
+
+ _
+ Public Property ExtensionData() As System.Runtime.Serialization.ExtensionDataObject Implements System.Runtime.Serialization.IExtensibleDataObject.ExtensionData
+ Get
+ Return Me.extensionDataField
+ End Get
+ Set
+ Me.extensionDataField = value
+ End Set
+ End Property
+
+ _
+ Public Property ForceDirectDatabaseAccess() As Boolean
+ Get
+ Return Me.ForceDirectDatabaseAccessField
+ End Get
+ Set
+ If (Me.ForceDirectDatabaseAccessField.Equals(value) <> true) Then
+ Me.ForceDirectDatabaseAccessField = value
+ Me.RaisePropertyChanged("ForceDirectDatabaseAccess")
+ End If
+ End Set
+ End Property
+
+ Public Event PropertyChanged As System.ComponentModel.PropertyChangedEventHandler Implements System.ComponentModel.INotifyPropertyChanged.PropertyChanged
+
+ Protected Sub RaisePropertyChanged(ByVal propertyName As String)
+ Dim propertyChanged As System.ComponentModel.PropertyChangedEventHandler = Me.PropertyChangedEvent
+ If (Not (propertyChanged) Is Nothing) Then
+ propertyChanged(Me, New System.ComponentModel.PropertyChangedEventArgs(propertyName))
+ End If
+ End Sub
+ End Class
+
_
+ Partial Public Class ExecuteNonQueryRequest
+ Inherits Object
+ Implements System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged
+
+ _
+ Private extensionDataField As System.Runtime.Serialization.ExtensionDataObject
+
+ _
+ Private ConnectionIdField As Integer
+
+ _
+ Private DatabaseTypeField As EDMIServiceReference.DatabaseType
+
+ _
+ Private NamedDatabaseField As EDMIServiceReference.DatabaseName
+
+ _
+ Private SqlCommandField As String
+
+ _
+ Public Property ExtensionData() As System.Runtime.Serialization.ExtensionDataObject Implements System.Runtime.Serialization.IExtensibleDataObject.ExtensionData
+ Get
+ Return Me.extensionDataField
+ End Get
+ Set
+ Me.extensionDataField = value
+ End Set
+ End Property
+
+ _
+ Public Property ConnectionId() As Integer
+ Get
+ Return Me.ConnectionIdField
+ End Get
+ Set
+ If (Me.ConnectionIdField.Equals(value) <> true) Then
+ Me.ConnectionIdField = value
+ Me.RaisePropertyChanged("ConnectionId")
+ End If
+ End Set
+ End Property
+
+ _
+ Public Property DatabaseType() As EDMIServiceReference.DatabaseType
+ Get
+ Return Me.DatabaseTypeField
+ End Get
+ Set
+ If (Me.DatabaseTypeField.Equals(value) <> true) Then
+ Me.DatabaseTypeField = value
+ Me.RaisePropertyChanged("DatabaseType")
+ End If
+ End Set
+ End Property
+
+ _
+ Public Property NamedDatabase() As EDMIServiceReference.DatabaseName
+ Get
+ Return Me.NamedDatabaseField
+ End Get
+ Set
+ If (Me.NamedDatabaseField.Equals(value) <> true) Then
+ Me.NamedDatabaseField = value
+ Me.RaisePropertyChanged("NamedDatabase")
+ End If
+ End Set
+ End Property
+
+ _
+ Public Property SqlCommand() As String
+ Get
+ Return Me.SqlCommandField
+ End Get
+ Set
+ If (Object.ReferenceEquals(Me.SqlCommandField, value) <> true) Then
+ Me.SqlCommandField = value
+ Me.RaisePropertyChanged("SqlCommand")
+ End If
+ End Set
+ End Property
+
+ Public Event PropertyChanged As System.ComponentModel.PropertyChangedEventHandler Implements System.ComponentModel.INotifyPropertyChanged.PropertyChanged
+
+ Protected Sub RaisePropertyChanged(ByVal propertyName As String)
+ Dim propertyChanged As System.ComponentModel.PropertyChangedEventHandler = Me.PropertyChangedEvent
+ If (Not (propertyChanged) Is Nothing) Then
+ propertyChanged(Me, New System.ComponentModel.PropertyChangedEventArgs(propertyName))
+ End If
+ End Sub
+ End Class
+
_
Partial Public Class NewFileRequest
Inherits Object
@@ -824,7 +1027,8 @@ Namespace EDMIServiceReference
_
Partial Public Class FileProperties
Inherits Object
@@ -967,7 +1171,8 @@ Namespace EDMIServiceReference
_
Partial Public Class UserAttributeValue
Inherits Object
@@ -1286,7 +1491,7 @@ Namespace EDMIServiceReference
_
Partial Public Class SetAttributeValueRequest
Inherits Object
@@ -1542,7 +1747,7 @@ Namespace EDMIServiceReference
_
Partial Public Class GetFileObjectRequest
Inherits Object
@@ -1606,7 +1811,7 @@ Namespace EDMIServiceReference
_
Partial Public Class FileObject
Inherits Object
@@ -1749,6 +1954,12 @@ Namespace EDMIServiceReference
_
Function HeartbeatAsync() As System.Threading.Tasks.Task(Of Boolean)
+ _
+ Function GetClientConfig() As EDMIServiceReference.GetClientConfigResponse
+
+ _
+ Function GetClientConfigAsync() As System.Threading.Tasks.Task(Of EDMIServiceReference.GetClientConfigResponse)
+
_
Function GetCachedTables() As String()
@@ -1781,6 +1992,12 @@ Namespace EDMIServiceReference
_
Function ReturnScalarValueAsync(ByVal pData As EDMIServiceReference.GetScalarValueRequest) As System.Threading.Tasks.Task(Of EDMIServiceReference.GetScalarValueResponse)
+ _
+ Function ExecuteNonQuery(ByVal pData As EDMIServiceReference.ExecuteNonQueryRequest) As EDMIServiceReference.ExecuteNonQueryResponse
+
+ _
+ Function ExecuteNonQueryAsync(ByVal pData As EDMIServiceReference.ExecuteNonQueryRequest) As System.Threading.Tasks.Task(Of EDMIServiceReference.ExecuteNonQueryResponse)
+
+
+
+
+
+
+
+
+
+
@@ -92,6 +101,15 @@
+
+
+
+
+
+
+
+
+
diff --git a/Modules.EDMIAPI/DatabaseWithFallback.vb b/Modules.EDMIAPI/DatabaseWithFallback.vb
index 39739117..ed83b916 100644
--- a/Modules.EDMIAPI/DatabaseWithFallback.vb
+++ b/Modules.EDMIAPI/DatabaseWithFallback.vb
@@ -8,7 +8,8 @@ Imports DigitalData.Modules.Language.Utils
Public Class DatabaseWithFallback
Private ReadOnly _Logger As Logger
Private ReadOnly _Client As Client
- Private ReadOnly _DatabaseEDM As MSSQLServer
+ Private ReadOnly _ClientConfig As ConfigClientConfiguration
+ Private ReadOnly _DatabaseECM As MSSQLServer
Private ReadOnly _DatabaseIDB As MSSQLServer
'''
@@ -49,8 +50,11 @@ Public Class DatabaseWithFallback
Public Sub New(LogConfig As LogConfig, Client As Client, DatabaseECM As MSSQLServer, DatabaseIDB As MSSQLServer)
_Logger = LogConfig.GetLogger()
_Client = Client
- _DatabaseEDM = DatabaseECM
+ _DatabaseECM = DatabaseECM
_DatabaseIDB = DatabaseIDB
+
+ ' Load client config, will throw if client is not yet connected to service
+ _ClientConfig = Client.TryGetClientConfig()
End Sub
Public Function GetDatatableECM(pSQL As String, Optional pConnectionId As Integer = 0) As DataTable
@@ -73,6 +77,14 @@ Public Class DatabaseWithFallback
Return GetScalarValue(pSQL, Constants.DatabaseType.IDB, pForceFallback:=False, pConnectionId)
End Function
+ Public Function ExecuteNonQueryECM(pSQL As String, Optional pConnectionId As Integer = 0) As Boolean
+ Return ExecuteNonQuery(pSQL, Constants.DatabaseType.ECM, pForceFallback:=False, pConnectionId)
+ End Function
+
+ Public Function ExecuteNonQueryIDB(pSQL As String, Optional pConnectionId As Integer = 0) As Boolean
+ Return ExecuteNonQuery(pSQL, Constants.DatabaseType.IDB, pForceFallback:=False, pConnectionId)
+ End Function
+
'''
''' Returns a Datatable by trying to fetch a cached version from the service, then querying the database through the service and querying the database directly as fallback.
'''
@@ -112,7 +124,7 @@ Public Class DatabaseWithFallback
End If
' If ForceFallback flag is set, we go to database immediately
- If pForceFallback Then
+ If pForceFallback Or _ClientConfig.ForceDirectDatabaseAccess Then
Return GetDatatableFromDatabase(pFallbackSQL, pFallbackType, pConnectionId)
End If
@@ -165,7 +177,7 @@ Public Class DatabaseWithFallback
End If
' If ForceFallback flag is set, we go to database immediately
- If pForceFallback Then
+ If pForceFallback Or _ClientConfig.ForceDirectDatabaseAccess Then
Return GetScalarValueFromDatabase(pSQL, pDatabaseType, pConnectionId)
End If
@@ -178,6 +190,37 @@ Public Class DatabaseWithFallback
End Try
End Function
+ '''
+ ''' Returns a Scalar Value by querying the database through the service and querying the database directly as fallback.
+ '''
+ ''' SQL Command to execute as fallback
+ ''' Named Database to use for the fallback SQL Command
+ ''' Force the fallback, skipping the service completely
+ ''' Connection Id to use, references TBDD_CONNECTION
+ Public Function ExecuteNonQuery(pSQL As String, pDatabaseType As Constants.DatabaseType, Optional pForceFallback As Boolean = False, Optional pConnectionId As Integer = 0) As Boolean
+ Try
+ Dim oResult As DataTable = Nothing
+ Dim oTableResult As TableResult = Nothing
+
+ ' If there is no client, we assume there is no service (configured)
+ If _Client Is Nothing Then
+ Return ExecuteNonQueryFromDatabase(pSQL, pDatabaseType, pConnectionId)
+ End If
+
+ ' If ForceFallback flag is set, we go to database immediately
+ If pForceFallback Or _ClientConfig.ForceDirectDatabaseAccess Then
+ Return ExecuteNonQueryFromDatabase(pSQL, pDatabaseType, pConnectionId)
+ End If
+
+ Return ExecuteNonQueryFromService(pSQL, pDatabaseType, pConnectionId)
+
+ Catch ex As Exception
+ _Logger.Error(ex)
+ Return Nothing
+
+ End Try
+ End Function
+
Private Function IsTableCached(pName As String) As Boolean
If _Client Is Nothing Then
Return False
@@ -186,19 +229,32 @@ Public Class DatabaseWithFallback
Return _Client.CachedTables.Contains(pName.ToUpper)
End Function
- Private Function GetDatatableFromService(pSQLCommand As String, DatabaseType As Constants.DatabaseType, pConnectionId As Integer)
+ Private Function GetDatatableFromService(pSQLCommand As String, DatabaseType As Constants.DatabaseType, pConnectionId As Integer) As DataTable
Try
+ Dim oResult As GetDatatableResponse = Nothing
+
Select Case DatabaseType
Case Constants.DatabaseType.ECM
- Return _Client.GetDatatableFromECM(pSQLCommand, pConnectionId)
+ oResult = _Client.GetDatatableFromECM(pSQLCommand, pConnectionId)
Case Constants.DatabaseType.IDB
- Return _Client.GetDatatableFromIDB(pSQLCommand, pConnectionId)
+ oResult = _Client.GetDatatableFromIDB(pSQLCommand, pConnectionId)
Case Else
- Return Nothing
+ Return GetDatatableFromDatabase(pSQLCommand, DatabaseType, pConnectionId)
End Select
+
+ If oResult Is Nothing Then
+ Throw New ApplicationException("Unexpected server error ocurred!")
+ End If
+
+ If oResult.OK = False Then
+ Throw New ApplicationException(oResult.ErrorMessage)
+ End If
+
+ Return oResult.Table
+
Catch ex As Exception
_Logger.Warn("GetDatatableFromService failed. Falling back to direct database access.")
_Logger.Error(ex)
@@ -207,19 +263,53 @@ Public Class DatabaseWithFallback
End Try
End Function
- Private Function GetScalarValueFromService(pSQLCommand As String, DatabaseType As Constants.DatabaseType, pConnectionId As Integer)
+
+ Private Function GetDatatableFromDatabase(pSQLCommand As String, DatabaseType As Constants.DatabaseType, pConnectionId As Integer) As DataTable
Try
+ Dim oResult As ExecuteNonQueryResponse = Nothing
+
Select Case DatabaseType
Case Constants.DatabaseType.ECM
- Return _Client.GetScalarValueFromECM(pSQLCommand, pConnectionId)
+ Return _DatabaseECM.GetDatatable(pSQLCommand)
Case Constants.DatabaseType.IDB
- Return _Client.GetScalarValueFromIDB(pSQLCommand, pConnectionId)
+ Return _DatabaseIDB.GetDatatable(pSQLCommand)
Case Else
- Return Nothing
+ Dim oConnectionString = _DatabaseECM.Get_ConnectionStringforID(pConnectionId)
+ Return _DatabaseECM.GetDatatableWithConnection(pSQLCommand, oConnectionString)
End Select
+ Catch ex As Exception
+ _Logger.Error(ex)
+ Return Nothing
+
+ End Try
+ End Function
+
+ Private Function GetScalarValueFromService(pSQLCommand As String, DatabaseType As Constants.DatabaseType, pConnectionId As Integer) As Object
+ Try
+ Dim oResult As GetScalarValueResponse = Nothing
+
+ Select Case DatabaseType
+ Case Constants.DatabaseType.ECM
+ oResult = _Client.GetScalarValueFromECM(pSQLCommand, pConnectionId)
+
+ Case Constants.DatabaseType.IDB
+ oResult = _Client.GetScalarValueFromIDB(pSQLCommand, pConnectionId)
+
+ End Select
+
+ If oResult Is Nothing Then
+ Throw New ApplicationException("Unexpected server error ocurred!")
+ End If
+
+ If oResult.OK = False Then
+ Throw New ApplicationException(oResult.ErrorMessage)
+ End If
+
+ Return oResult.Scalar
+
Catch ex As Exception
_Logger.Warn("GetScalarValueFromService failed. Falling back to direct database access.")
_Logger.Error(ex)
@@ -228,37 +318,19 @@ Public Class DatabaseWithFallback
End Try
End Function
- Private Function GetDatatableFromDatabase(pSQLCommand As String, DatabaseType As Constants.DatabaseType, pConnectionId As Integer)
+
+ Private Function GetScalarValueFromDatabase(pSQLCommand As String, DatabaseType As Constants.DatabaseType, pConnectionId As Integer) As Object
Try
Select Case DatabaseType
Case Constants.DatabaseType.ECM
- Return _DatabaseEDM.GetDatatable(pSQLCommand)
-
- Case Constants.DatabaseType.IDB
- Return _DatabaseIDB.GetDatatable(pSQLCommand)
-
- Case Else
- Return Nothing
-
- End Select
- Catch ex As Exception
- _Logger.Error(ex)
- Return Nothing
-
- End Try
- End Function
-
- Private Function GetScalarValueFromDatabase(pSQLCommand As String, DatabaseType As Constants.DatabaseType, pConnectionId As Integer)
- Try
- Select Case DatabaseType
- Case Constants.DatabaseType.ECM
- Return _DatabaseEDM.GetScalarValue(pSQLCommand)
+ Return _DatabaseECM.GetScalarValue(pSQLCommand)
Case Constants.DatabaseType.IDB
Return _DatabaseIDB.GetScalarValue(pSQLCommand)
Case Else
- Return Nothing
+ Dim oConnectionString = _DatabaseECM.Get_ConnectionStringforID(pConnectionId)
+ Return _DatabaseECM.GetScalarValueWithConnection(pSQLCommand, oConnectionString)
End Select
Catch ex As Exception
@@ -267,5 +339,57 @@ Public Class DatabaseWithFallback
End Try
End Function
+
+ Private Function ExecuteNonQueryFromService(pSQLCommand As String, DatabaseType As Constants.DatabaseType, pConnectionId As Integer) As Boolean
+ Try
+ Dim oResult As ExecuteNonQueryResponse = Nothing
+
+ Select Case DatabaseType
+ Case Constants.DatabaseType.ECM
+ oResult = _Client.ExecuteNonQueryFromECM(pSQLCommand, pConnectionId)
+
+ Case Constants.DatabaseType.IDB
+ oResult = _Client.ExecuteNonQueryFromIDB(pSQLCommand, pConnectionId)
+
+ End Select
+
+ If oResult Is Nothing Then
+ Throw New ApplicationException("Unexpected server error ocurred!")
+ End If
+
+ If oResult.OK = False Then
+ Throw New ApplicationException(oResult.ErrorMessage)
+ End If
+
+ Return oResult.Result
+
+ Catch ex As Exception
+ _Logger.Warn("ExecuteNonQueryFromService failed. Falling back to direct database access.")
+ _Logger.Error(ex)
+ Return ExecuteNonQueryFromDatabase(pSQLCommand, DatabaseType, pConnectionId)
+
+ End Try
+ End Function
+
+ Private Function ExecuteNonQueryFromDatabase(pSQLCommand As String, DatabaseType As Constants.DatabaseType, pConnectionId As Integer) As Boolean
+ Try
+ Select Case DatabaseType
+ Case Constants.DatabaseType.ECM
+ Return _DatabaseECM.ExecuteNonQuery(pSQLCommand)
+
+ Case Constants.DatabaseType.IDB
+ Return _DatabaseIDB.ExecuteNonQuery(pSQLCommand)
+
+ Case Else
+ Dim oConnectionString = _DatabaseECM.Get_ConnectionStringforID(pConnectionId)
+ Return _DatabaseECM.ExecuteNonQueryWithConnection(pSQLCommand, oConnectionString)
+
+ End Select
+ Catch ex As Exception
+ _Logger.Error(ex)
+ Return False
+
+ End Try
+ End Function
End Class
diff --git a/Modules.EDMIAPI/EDMI.API.vbproj b/Modules.EDMIAPI/EDMI.API.vbproj
index 757851e6..d9595048 100644
--- a/Modules.EDMIAPI/EDMI.API.vbproj
+++ b/Modules.EDMIAPI/EDMI.API.vbproj
@@ -125,6 +125,12 @@
Reference.svcmap
+
+ Reference.svcmap
+
+
+ Reference.svcmap
+
Reference.svcmap
@@ -170,6 +176,12 @@
Designer
+
+ Designer
+
+
+ Designer
+
Designer
@@ -179,25 +191,28 @@
Designer
-
- Designer
-
Designer
-
+
Designer
-
+
Designer
-
+
+ Designer
+
+
Designer
Designer
+
+ Designer
+
Designer
diff --git a/Modules.EDMIAPI/My Project/AssemblyInfo.vb b/Modules.EDMIAPI/My Project/AssemblyInfo.vb
index 6a9f3891..06cd13a5 100644
--- a/Modules.EDMIAPI/My Project/AssemblyInfo.vb
+++ b/Modules.EDMIAPI/My Project/AssemblyInfo.vb
@@ -12,8 +12,8 @@ Imports System.Runtime.InteropServices
-
-
+
+
@@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices
' übernehmen, indem Sie "*" eingeben:
'
-
-
+
+
diff --git a/Service.EDMIService/BaseMethod.vb b/Service.EDMIService/BaseMethod.vb
index afd19e47..7e4d85a2 100644
--- a/Service.EDMIService/BaseMethod.vb
+++ b/Service.EDMIService/BaseMethod.vb
@@ -13,6 +13,7 @@ Public MustInherit Class BaseMethod
Public Sub New(pLogConfig As LogConfig, pDatabaseIDB As MSSQLServer, pDatabaseECM As MSSQLServer, pGlobalState As GlobalState)
MyBase.New(pLogConfig)
DatabaseIDB = pDatabaseIDB
+ DatabaseECM = pDatabaseECM
Helpers = New Helpers(pLogConfig, pDatabaseIDB)
GlobalState = pGlobalState
End Sub
diff --git a/Service.EDMIService/Config.vb b/Service.EDMIService/Config.vb
index bf0ee0d7..33026e0e 100644
--- a/Service.EDMIService/Config.vb
+++ b/Service.EDMIService/Config.vb
@@ -22,4 +22,10 @@ Public Class Config
Public Property ContainerPassword As String = String.Empty
Public Property Debug As Boolean = False
+
+ Public Property ClientConfig As New ClientConfiguration
+
+ Public Class ClientConfiguration
+ Public Property ForceDirectDatabaseAccess As Boolean = False
+ End Class
End Class
diff --git a/Service.EDMIService/EDMIService.vb b/Service.EDMIService/EDMIService.vb
index a680e9cf..53e5b602 100644
--- a/Service.EDMIService/EDMIService.vb
+++ b/Service.EDMIService/EDMIService.vb
@@ -12,6 +12,7 @@ Imports DigitalData.Services.EDMIService.Exceptions
Imports DigitalData.Services.EDMIService.Methods
Imports DigitalData.Services.EDMIService.Methods.SetAttributeValue
Imports DigitalData.Services.EDMIService.Methods.Database
+Imports DigitalData.Services.EDMIService.Methods.IDB
Public Class EDMIService
@@ -54,21 +55,34 @@ Public Class EDMIService
Dim oUsername = StripDomainFromUsername(oOperationContext.ServiceSecurityContext.WindowsIdentity.Name)
_Username = oUsername
+
_Logger = LogConfig.GetLogger()
_Logger.Debug("New Request by User [{0}]", _Username)
_IDBHelpers = New IDB.Helpers(LogConfig, MSSQL_IDB)
End Sub
+#Region "=== Base ==="
+ Public Function Heartbeat() As Boolean Implements IEDMIService.Heartbeat
+ Return True
+ End Function
+
+ Public Function GetClientConfig() As Base.GetClientConfig.GetClientConfigResponse Implements IEDMIService.GetClientConfig
+ _Logger.Debug("Start of Method [GetClientConfig]")
+ Dim oGetClientConfig As New Base.GetClientConfig.GetClientConfigMethod(LogConfig, MSSQL_IDB, MSSQL_ECM, GlobalState)
+ Return oGetClientConfig.Run()
+ End Function
+#End Region
+
Public Function NewFile(Data As NewFile.NewFileRequest) As NewFile.NewFileResponse Implements IEDMIService.NewFile
_Logger.Debug("Start of Method [NewFile]")
- Dim oNewFile As New NewFileMethod(LogConfig, MSSQL_IDB, MSSQL_ECM, GlobalState)
+ Dim oNewFile As New NewFile.NewFileMethod(LogConfig, MSSQL_IDB, MSSQL_ECM, GlobalState)
Return oNewFile.Run(Data)
End Function
Public Function SetAttributeValue(Data As SetAttributeValue.SetAttributeValueRequest) As SetAttributeValue.SetAttributeValueResponse Implements IEDMIService.SetAttributeValue
_Logger.Debug("Start of Method [SetAttributeValue]")
- Dim oSetAttributeValue As New SetAttributeValueMethod(LogConfig, MSSQL_IDB, MSSQL_ECM, GlobalState)
+ Dim oSetAttributeValue As New SetAttributeValue.SetAttributeValueMethod(LogConfig, MSSQL_IDB, MSSQL_ECM, GlobalState)
Return oSetAttributeValue.Run(Data)
End Function
@@ -84,11 +98,6 @@ Public Class EDMIService
Return oGetFileObject.Run(pData)
End Function
-#Region "=== Heartbeat ==="
- Public Function Heartbeat() As Boolean Implements IEDMIService.Heartbeat
- Return True
- End Function
-#End Region
#Region "=== Database ==="
Public Function GetCachedTables() As List(Of String) Implements IEDMIService.GetCachedTables
@@ -126,6 +135,12 @@ Public Class EDMIService
Dim oGetScalarValue As New GetScalarValue.GetScalarValueMethod(LogConfig, MSSQL_IDB, MSSQL_ECM, GlobalState)
Return oGetScalarValue.Run(pData)
End Function
+
+ Public Function ExecuteNonQuery(pData As ExecuteNonQuery.ExecuteNonQueryRequest) As ExecuteNonQuery.ExecuteNonQueryResponse Implements IEDMIService.ExecuteNonQuery
+ _Logger.Debug("Start of Method [ExecuteNonQuery]")
+ Dim oExecuteNonQuery As New ExecuteNonQuery.ExecuteNonQueryMethod(LogConfig, MSSQL_IDB, MSSQL_ECM, GlobalState)
+ Return oExecuteNonQuery.Run(pData)
+ End Function
#End Region
#Region "=== Database (MSSQL IDB) ==="
diff --git a/Service.EDMIService/EDMIService.vbproj b/Service.EDMIService/EDMIService.vbproj
index f14bf1cf..4cb4a321 100644
--- a/Service.EDMIService/EDMIService.vbproj
+++ b/Service.EDMIService/EDMIService.vbproj
@@ -131,25 +131,30 @@
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
@@ -161,12 +166,12 @@
-
-
-
-
-
-
+
+
+
+
+
+
@@ -175,7 +180,7 @@
-
+
diff --git a/Service.EDMIService/GlobalState.vb b/Service.EDMIService/GlobalState.vb
index 6e8e8143..51baa413 100644
--- a/Service.EDMIService/GlobalState.vb
+++ b/Service.EDMIService/GlobalState.vb
@@ -11,6 +11,7 @@ Public Class GlobalState
Public Property ObjectStores As New List(Of ObjectStore)
Public Property Connections As New List(Of DatabaseConnection)
+ Public Property ClientConfig As New Config.ClientConfiguration
Public Property TableStore As New DataSet
diff --git a/Service.EDMIService/IDB/Helpers.vb b/Service.EDMIService/IDB/Helpers.vb
index eb3f8d56..9b150509 100644
--- a/Service.EDMIService/IDB/Helpers.vb
+++ b/Service.EDMIService/IDB/Helpers.vb
@@ -6,7 +6,7 @@ Imports System.Data.SqlClient
Imports System.IO
Imports DigitalData.Modules.ZooFlow.State
Imports DigitalData.Modules.Patterns
-Imports DigitalData.Services.EDMIService.Methods
+Imports DigitalData.Services.EDMIService.Methods.IDB
Namespace IDB
Public Class Helpers
diff --git a/Service.EDMIService/IEDMIService.vb b/Service.EDMIService/IEDMIService.vb
index e58c6822..042aadb0 100644
--- a/Service.EDMIService/IEDMIService.vb
+++ b/Service.EDMIService/IEDMIService.vb
@@ -5,13 +5,17 @@ Imports DigitalData.Services.EDMIService.Exceptions
Imports DigitalData.Services.EDMIService.Messages
Imports DigitalData.Services.EDMIService.Methods
Imports DigitalData.Services.EDMIService.Methods.Database
+Imports DigitalData.Services.EDMIService.Methods.IDB
Interface IEDMIService
-#Region "Heartbeat"
+#Region "Base"
Function Heartbeat() As Boolean
+
+
+ Function GetClientConfig() As Base.GetClientConfig.GetClientConfigResponse
#End Region
#Region "Database"
@@ -28,6 +32,9 @@ Interface IEDMIService
Function ReturnScalarValue(pData As GetScalarValue.GetScalarValueRequest) As GetScalarValue.GetScalarValueResponse
+
+
+ Function ExecuteNonQuery(pData As ExecuteNonQuery.ExecuteNonQueryRequest) As ExecuteNonQuery.ExecuteNonQueryResponse
#End Region
#Region "Database (Firebird)"
diff --git a/Service.EDMIService/Methods/Base/GetClientConfig/GetClientConfigMethod.vb b/Service.EDMIService/Methods/Base/GetClientConfig/GetClientConfigMethod.vb
new file mode 100644
index 00000000..285ac3cd
--- /dev/null
+++ b/Service.EDMIService/Methods/Base/GetClientConfig/GetClientConfigMethod.vb
@@ -0,0 +1,22 @@
+Imports DigitalData.Modules.Database
+Imports DigitalData.Modules.Logging
+
+Namespace Methods.Base.GetClientConfig
+ Public Class GetClientConfigMethod
+ Inherits BaseMethod
+
+ Public Sub New(pLogConfig As LogConfig, pDatabaseIDB As MSSQLServer, pDatabaseECM As MSSQLServer, pGlobalState As GlobalState)
+ MyBase.New(pLogConfig, pDatabaseIDB, pDatabaseECM, pGlobalState)
+ End Sub
+
+ Public Function Run() As GetClientConfigResponse
+ Try
+ Return New GetClientConfigResponse(GlobalState.ClientConfig)
+ Catch ex As Exception
+ Logger.Warn("Error occurred while getting client config!")
+ Return New GetClientConfigResponse(ex)
+ End Try
+ End Function
+ End Class
+
+End Namespace
\ No newline at end of file
diff --git a/Service.EDMIService/Methods/Base/GetClientConfig/GetClientConfigResponse.vb b/Service.EDMIService/Methods/Base/GetClientConfig/GetClientConfigResponse.vb
new file mode 100644
index 00000000..6ad1ad2b
--- /dev/null
+++ b/Service.EDMIService/Methods/Base/GetClientConfig/GetClientConfigResponse.vb
@@ -0,0 +1,23 @@
+Imports System.Runtime.Serialization
+
+Namespace Methods.Base.GetClientConfig
+
+
+
+ Public Class GetClientConfigResponse
+ Inherits Messages.BaseResponse
+
+
+ Public Property ClientConfig As Config.ClientConfiguration
+
+ Public Sub New(pConfig As Config.ClientConfiguration)
+ MyBase.New()
+ ClientConfig = pConfig
+ End Sub
+
+ Public Sub New(pException As Exception, Optional pDetails As String = "")
+ MyBase.New(pException, pDetails)
+ End Sub
+ End Class
+
+End Namespace
\ No newline at end of file
diff --git a/Service.EDMIService/Methods/Database/ExecuteNonQuery/ExecuteNonQueryMethod.vb b/Service.EDMIService/Methods/Database/ExecuteNonQuery/ExecuteNonQueryMethod.vb
new file mode 100644
index 00000000..6d739512
--- /dev/null
+++ b/Service.EDMIService/Methods/Database/ExecuteNonQuery/ExecuteNonQueryMethod.vb
@@ -0,0 +1,66 @@
+Imports DigitalData.Modules.Database
+Imports DigitalData.Modules.Logging
+
+Namespace Methods.Database.ExecuteNonQuery
+ '''
+ ''' Database method for executing a query from the supplied SQL Command and a Connection Id.
+ '''
+ Public Class ExecuteNonQueryMethod
+ Inherits BaseMethod
+
+ Public Sub New(pLogConfig As LogConfig, pDatabaseIDB As MSSQLServer, pDatabaseECM As MSSQLServer, pGlobalState As GlobalState)
+ MyBase.New(pLogConfig, pDatabaseIDB, pDatabaseECM, pGlobalState)
+ End Sub
+
+ '''
+ ''' Executes a Query. If ConnectionId is empty, uses the configured DD_ECM Database.
+ '''
+ Public Function Run(pData As ExecuteNonQueryRequest) As ExecuteNonQueryResponse
+ Try
+ Dim oResult As Boolean = False
+
+ Select Case pData.DatabaseType
+ Case DatabaseType.MSSQL
+ If pData.NamedDatabase = DatabaseName.None Then
+ oResult = ExecuteNonQueryByConnectionId(pData.SqlCommand, pData.ConnectionId)
+
+ ElseIf pData.NamedDatabase = DatabaseName.ECM Then
+ oResult = DatabaseECM.ExecuteNonQuery(pData.SqlCommand)
+
+ ElseIf pData.NamedDatabase = DatabaseName.IDB Then
+ oResult = DatabaseIDB.ExecuteNonQuery(pData.SqlCommand)
+
+ Else
+ LogAndThrow($"Unsupported Named Database supplied. SQL Command [{pData.SqlCommand}] was not executed!")
+
+ End If
+
+ Case Else
+ LogAndThrow($"Only MSSQL Server is supported at this time. SQL Command [{pData.SqlCommand}] was not executed!")
+
+ End Select
+
+ Return New ExecuteNonQueryResponse(oResult)
+ Catch ex As Exception
+ Logger.Warn("Error occurred while getting database scalar value!")
+ Return New ExecuteNonQueryResponse(ex)
+ End Try
+ End Function
+
+ Private Function ExecuteNonQueryByConnectionId(pSQLCommand As String, pConnectionId As Integer) As Boolean
+ If pConnectionId = 0 Then
+ Return DatabaseECM.ExecuteNonQuery(pSQLCommand)
+ Else
+ Dim oConnectionString = DatabaseECM.Get_ConnectionStringforID(pConnectionId)
+ If oConnectionString <> "" Then
+
+ Return DatabaseIDB.ExecuteNonQueryWithConnection(pSQLCommand, oConnectionString)
+ Else
+ Logger.Warn("ConnectionId [{0}] could not be translated into ConnectionString. Exiting.")
+ Return False
+ End If
+ End If
+ End Function
+ End Class
+
+End Namespace
\ No newline at end of file
diff --git a/Service.EDMIService/Methods/Database/ExecuteNonQuery/ExecuteNonQueryRequest.vb b/Service.EDMIService/Methods/Database/ExecuteNonQuery/ExecuteNonQueryRequest.vb
new file mode 100644
index 00000000..b14f665d
--- /dev/null
+++ b/Service.EDMIService/Methods/Database/ExecuteNonQuery/ExecuteNonQueryRequest.vb
@@ -0,0 +1,8 @@
+Namespace Methods.Database.ExecuteNonQuery
+ Public Class ExecuteNonQueryRequest
+ Public Property SqlCommand As String = ""
+ Public Property ConnectionId As Integer = 0
+ Public Property DatabaseType As DatabaseType = DatabaseType.MSSQL
+ Public Property NamedDatabase As DatabaseName = DatabaseName.ECM
+ End Class
+End Namespace
diff --git a/Service.EDMIService/Methods/Database/ExecuteNonQuery/ExecuteNonQueryResponse.vb b/Service.EDMIService/Methods/Database/ExecuteNonQuery/ExecuteNonQueryResponse.vb
new file mode 100644
index 00000000..b1e36639
--- /dev/null
+++ b/Service.EDMIService/Methods/Database/ExecuteNonQuery/ExecuteNonQueryResponse.vb
@@ -0,0 +1,24 @@
+Imports System.Runtime.Serialization
+
+Namespace Methods.Database.ExecuteNonQuery
+
+
+
+ Public Class ExecuteNonQueryResponse
+ Inherits Messages.BaseResponse
+
+
+ Public Property Result As Boolean
+
+ Public Sub New(pResult As Object)
+ MyBase.New()
+ Result = pResult
+ End Sub
+
+ Public Sub New(pException As Exception, Optional pDetails As String = "")
+ MyBase.New(pException, pDetails)
+ End Sub
+ End Class
+
+End Namespace
+
diff --git a/Service.EDMIService/Methods/GetDatatableFromCache/GetDatatableFromCacheMethod.vb b/Service.EDMIService/Methods/Database/GetDatatableFromCache/GetDatatableFromCacheMethod.vb
similarity index 97%
rename from Service.EDMIService/Methods/GetDatatableFromCache/GetDatatableFromCacheMethod.vb
rename to Service.EDMIService/Methods/Database/GetDatatableFromCache/GetDatatableFromCacheMethod.vb
index 3fdb99b8..a5e3fb06 100644
--- a/Service.EDMIService/Methods/GetDatatableFromCache/GetDatatableFromCacheMethod.vb
+++ b/Service.EDMIService/Methods/Database/GetDatatableFromCache/GetDatatableFromCacheMethod.vb
@@ -2,7 +2,7 @@
Imports DigitalData.Modules.Language
Imports DigitalData.Modules.Logging
-Namespace Methods.GetDatatableFromCache
+Namespace Methods.Database.GetDatatableFromCache
Public Class GetDatatableFromCacheMethod
Inherits BaseMethod
diff --git a/Service.EDMIService/Methods/GetDatatableFromCache/GetDatatableFromCacheRequest.vb b/Service.EDMIService/Methods/Database/GetDatatableFromCache/GetDatatableFromCacheRequest.vb
similarity index 87%
rename from Service.EDMIService/Methods/GetDatatableFromCache/GetDatatableFromCacheRequest.vb
rename to Service.EDMIService/Methods/Database/GetDatatableFromCache/GetDatatableFromCacheRequest.vb
index 173ef344..9dd3a763 100644
--- a/Service.EDMIService/Methods/GetDatatableFromCache/GetDatatableFromCacheRequest.vb
+++ b/Service.EDMIService/Methods/Database/GetDatatableFromCache/GetDatatableFromCacheRequest.vb
@@ -1,6 +1,6 @@
Imports System.Runtime.Serialization
-Namespace Methods.GetDatatableFromCache
+Namespace Methods.Database.GetDatatableFromCache
Public Class GetDatatableFromCacheRequest
diff --git a/Service.EDMIService/Methods/GetDatatableFromCache/GetDatatableFromCacheResponse.vb b/Service.EDMIService/Methods/Database/GetDatatableFromCache/GetDatatableFromCacheResponse.vb
similarity index 91%
rename from Service.EDMIService/Methods/GetDatatableFromCache/GetDatatableFromCacheResponse.vb
rename to Service.EDMIService/Methods/Database/GetDatatableFromCache/GetDatatableFromCacheResponse.vb
index 8480e418..494fd364 100644
--- a/Service.EDMIService/Methods/GetDatatableFromCache/GetDatatableFromCacheResponse.vb
+++ b/Service.EDMIService/Methods/Database/GetDatatableFromCache/GetDatatableFromCacheResponse.vb
@@ -1,6 +1,6 @@
Imports System.Runtime.Serialization
-Namespace Methods.GetDatatableFromCache
+Namespace Methods.Database.GetDatatableFromCache
Public Class GetDatatableFromCacheResponse
diff --git a/Service.EDMIService/Methods/GlobalIndexer/ImportFile/ImportFileMethod.vb b/Service.EDMIService/Methods/GlobalIndexer/ImportFile/ImportFileMethod.vb
index 34581d4f..b3ea349a 100644
--- a/Service.EDMIService/Methods/GlobalIndexer/ImportFile/ImportFileMethod.vb
+++ b/Service.EDMIService/Methods/GlobalIndexer/ImportFile/ImportFileMethod.vb
@@ -1,9 +1,10 @@
-Imports DigitalData.Modules.Database
+Imports System.IO
+Imports DigitalData.Modules.Database
Imports DigitalData.Modules.Logging
Imports DigitalData.Modules.Patterns
Imports DigitalData.Modules.Language
-Imports DigitalData.Services.EDMIService.Methods.GetDatatableFromCache
-Imports System.IO
+Imports DigitalData.Services.EDMIService.Methods.Database
+Imports DigitalData.Services.EDMIService.Methods.IDB
Imports DigitalData.Modules.ZooFlow.State
Namespace Methods.GlobalIndexer.ImportFile
@@ -12,7 +13,7 @@ Namespace Methods.GlobalIndexer.ImportFile
Private ReadOnly Loader As Loader
Private ReadOnly Patterns As Patterns2
- Private ReadOnly GetDatatable As GetDatatableFromCacheMethod
+ Private ReadOnly GetDatatable As GetDatatableFromCache.GetDatatableFromCacheMethod
Private ReadOnly Connection As SqlClient.SqlConnection
Private ReadOnly Transaction As SqlClient.SqlTransaction
@@ -59,7 +60,7 @@ Namespace Methods.GlobalIndexer.ImportFile
oAutoAttributes = oAutomaticIndexing.ApplyAutomaticeAttributes(oUserAttributes, pData.File.FileInfoRaw, User)
' Import the file
- Dim oNewFile As New NewFileMethod(LogConfig, DatabaseIDB, DatabaseECM, GlobalState)
+ Dim oNewFile As New NewFile.NewFileMethod(LogConfig, DatabaseIDB, DatabaseECM, GlobalState)
Dim oResponse = oNewFile.Run(New NewFile.NewFileRequest With {
.File = pData.File,
.BusinessEntity = pData.BusinessEntity,
diff --git a/Service.EDMIService/Methods/GlobalIndexer/ImportFile/ImportFileRequest.vb b/Service.EDMIService/Methods/GlobalIndexer/ImportFile/ImportFileRequest.vb
index 70b73c13..b4880430 100644
--- a/Service.EDMIService/Methods/GlobalIndexer/ImportFile/ImportFileRequest.vb
+++ b/Service.EDMIService/Methods/GlobalIndexer/ImportFile/ImportFileRequest.vb
@@ -1,5 +1,6 @@
Imports System.Runtime.Serialization
Imports DigitalData.Modules.ZooFlow.State
+Imports DigitalData.Services.EDMIService.Methods.IDB
Namespace Methods.GlobalIndexer.ImportFile
diff --git a/Service.EDMIService/Methods/GlobalIndexer/ImportFile/Steps/AutomaticIndexing.vb b/Service.EDMIService/Methods/GlobalIndexer/ImportFile/Steps/AutomaticIndexing.vb
index cedf6633..cb9144b7 100644
--- a/Service.EDMIService/Methods/GlobalIndexer/ImportFile/Steps/AutomaticIndexing.vb
+++ b/Service.EDMIService/Methods/GlobalIndexer/ImportFile/Steps/AutomaticIndexing.vb
@@ -5,6 +5,7 @@ Imports DigitalData.Modules.Logging
Imports DigitalData.Modules.Patterns
Imports DigitalData.Modules.ZooFlow.State
Imports DigitalData.Services.EDMIService.IDB
+Imports DigitalData.Services.EDMIService.Methods.IDB
Namespace Methods.GlobalIndexer.ImportFile.Steps
Public Class AutomaticIndexing
diff --git a/Service.EDMIService/Methods/GlobalIndexer/ImportFile/Steps/PostProcessing.vb b/Service.EDMIService/Methods/GlobalIndexer/ImportFile/Steps/PostProcessing.vb
index 650cde8a..9b702ff6 100644
--- a/Service.EDMIService/Methods/GlobalIndexer/ImportFile/Steps/PostProcessing.vb
+++ b/Service.EDMIService/Methods/GlobalIndexer/ImportFile/Steps/PostProcessing.vb
@@ -1,5 +1,6 @@
Imports DigitalData.Modules.Logging
Imports DigitalData.Modules.Language
+Imports DigitalData.Services.EDMIService.Methods.IDB
Namespace Methods.GlobalIndexer.ImportFile.Steps
Public Class PostProcessing
diff --git a/Service.EDMIService/Methods/GlobalIndexer/Loader.vb b/Service.EDMIService/Methods/GlobalIndexer/Loader.vb
index f3f50c63..ae14a93e 100644
--- a/Service.EDMIService/Methods/GlobalIndexer/Loader.vb
+++ b/Service.EDMIService/Methods/GlobalIndexer/Loader.vb
@@ -1,7 +1,7 @@
Imports DigitalData.Modules.Database
Imports DigitalData.Modules.Language
Imports DigitalData.Modules.Logging
-Imports DigitalData.Services.EDMIService.Methods.GetDatatableFromCache
+Imports DigitalData.Services.EDMIService.Methods.Database
Namespace Methods.GlobalIndexer
Public Class Loader
@@ -12,11 +12,11 @@ Namespace Methods.GlobalIndexer
Private Const VIEW_INDEX_AUTOMATIC = "VWDDINDEX_AUTOM"
Private Const TABLE_POST_PROCESSING = "TBDD_INDEX_MAN_POSTPROCESSING"
- Private GetDatatable As GetDatatableFromCacheMethod
+ Private GetDatatable As GetDatatableFromCache.GetDatatableFromCacheMethod
Public Sub New(pLogConfig As LogConfig, pDatabaseIDB As MSSQLServer, pDatabaseECM As MSSQLServer, pGlobalState As GlobalState)
MyBase.New(pLogConfig)
- GetDatatable = New GetDatatableFromCacheMethod(pLogConfig, pDatabaseIDB, pDatabaseECM, pGlobalState)
+ GetDatatable = New GetDatatableFromCache.GetDatatableFromCacheMethod(pLogConfig, pDatabaseIDB, pDatabaseECM, pGlobalState)
End Sub
'''
@@ -26,7 +26,7 @@ Namespace Methods.GlobalIndexer
Logger.Debug("Start of Method [LoadProfile]")
Try
- Dim oProfile = GetDatatable.Run(New GetDatatableFromCacheRequest With {
+ Dim oProfile = GetDatatable.Run(New GetDatatableFromCache.GetDatatableFromCacheRequest With {
.DataTable = VIEW_PROFILE,
.FilterExpression = $"DOCTYPE_ID = {pProfileId}"
})
@@ -69,7 +69,7 @@ Namespace Methods.GlobalIndexer
Try
' Load automatic Indexes for this Import
Dim oAutomaticIndexes = GetDatatable.Run(
- New GetDatatableFromCacheRequest With {
+ New GetDatatableFromCache.GetDatatableFromCacheRequest With {
.DataTable = VIEW_INDEX_AUTOMATIC,
.FilterExpression = $"DOCTYPE_ID = {pProfileId}"
})
@@ -112,7 +112,7 @@ Namespace Methods.GlobalIndexer
Try
' Load manual Indexes for this Import
Dim oManualIndexes = GetDatatable.Run(
- New GetDatatableFromCacheRequest With {
+ New GetDatatableFromCache.GetDatatableFromCacheRequest With {
.DataTable = VIEW_INDEX_MANUAL,
.FilterExpression = $"DOK_ID = {pProfileId}"
})
@@ -166,7 +166,7 @@ Namespace Methods.GlobalIndexer
' Load all relevant postprocessing steps
Dim oPostProcessingSteps = GetDatatable.Run(
- New GetDatatableFromCacheRequest With {
+ New GetDatatableFromCache.GetDatatableFromCacheRequest With {
.DataTable = TABLE_POST_PROCESSING,
.FilterExpression = $"IDXMAN_ID IN ({oIndexIds})"
})
diff --git a/Service.EDMIService/Methods/AttributeValue.vb b/Service.EDMIService/Methods/IDB/AttributeValue.vb
similarity index 95%
rename from Service.EDMIService/Methods/AttributeValue.vb
rename to Service.EDMIService/Methods/IDB/AttributeValue.vb
index f34631c9..2ba6bb4b 100644
--- a/Service.EDMIService/Methods/AttributeValue.vb
+++ b/Service.EDMIService/Methods/IDB/AttributeValue.vb
@@ -1,4 +1,4 @@
-Namespace Methods
+Namespace Methods.IDB
Public MustInherit Class BaseAttributeValue
diff --git a/Service.EDMIService/Methods/FileProperties.vb b/Service.EDMIService/Methods/IDB/FileProperties.vb
similarity index 97%
rename from Service.EDMIService/Methods/FileProperties.vb
rename to Service.EDMIService/Methods/IDB/FileProperties.vb
index 6682d748..96818ac2 100644
--- a/Service.EDMIService/Methods/FileProperties.vb
+++ b/Service.EDMIService/Methods/IDB/FileProperties.vb
@@ -1,6 +1,6 @@
Imports System.Runtime.Serialization
-Namespace Methods
+Namespace Methods.IDB
Public Class FileProperties
'''
''' Absolute filename of the file to be imported
diff --git a/Service.EDMIService/Methods/GetAttributeValue/GetAttributeValueMethod.vb b/Service.EDMIService/Methods/IDB/GetAttributeValue/GetAttributeValueMethod.vb
similarity index 89%
rename from Service.EDMIService/Methods/GetAttributeValue/GetAttributeValueMethod.vb
rename to Service.EDMIService/Methods/IDB/GetAttributeValue/GetAttributeValueMethod.vb
index 0a1a5c80..530d61a0 100644
--- a/Service.EDMIService/Methods/GetAttributeValue/GetAttributeValueMethod.vb
+++ b/Service.EDMIService/Methods/IDB/GetAttributeValue/GetAttributeValueMethod.vb
@@ -1,7 +1,8 @@
Imports DigitalData.Modules.Database
Imports DigitalData.Modules.Logging
+Imports DigitalData.Services.EDMIService.Methods.IDB.GetAttributeValue
-Namespace Methods.GetAttributeValue
+Namespace Methods.IDB.GetAttributeValue
Public Class GetAttributeValueMethod
Inherits BaseMethod
diff --git a/Service.EDMIService/Methods/GetAttributeValue/GetAttributeValueRequest.vb b/Service.EDMIService/Methods/IDB/GetAttributeValue/GetAttributeValueRequest.vb
similarity index 72%
rename from Service.EDMIService/Methods/GetAttributeValue/GetAttributeValueRequest.vb
rename to Service.EDMIService/Methods/IDB/GetAttributeValue/GetAttributeValueRequest.vb
index 84a85408..3147a73b 100644
--- a/Service.EDMIService/Methods/GetAttributeValue/GetAttributeValueRequest.vb
+++ b/Service.EDMIService/Methods/IDB/GetAttributeValue/GetAttributeValueRequest.vb
@@ -1,4 +1,4 @@
-Namespace Methods.GetAttributeValue
+Namespace Methods.IDB.GetAttributeValue
Public Class GetAttributeValueRequest
Public Property ObjectId As Long
End Class
diff --git a/Service.EDMIService/Methods/GetAttributeValue/GetAttributeValueResponse.vb b/Service.EDMIService/Methods/IDB/GetAttributeValue/GetAttributeValueResponse.vb
similarity index 93%
rename from Service.EDMIService/Methods/GetAttributeValue/GetAttributeValueResponse.vb
rename to Service.EDMIService/Methods/IDB/GetAttributeValue/GetAttributeValueResponse.vb
index 7c20e711..96622a23 100644
--- a/Service.EDMIService/Methods/GetAttributeValue/GetAttributeValueResponse.vb
+++ b/Service.EDMIService/Methods/IDB/GetAttributeValue/GetAttributeValueResponse.vb
@@ -1,6 +1,6 @@
Imports System.Runtime.Serialization
-Namespace Methods.GetAttributeValue
+Namespace Methods.IDB.GetAttributeValue
diff --git a/Service.EDMIService/Methods/GetFileObject/FileObject.vb b/Service.EDMIService/Methods/IDB/GetFileObject/FileObject.vb
similarity index 91%
rename from Service.EDMIService/Methods/GetFileObject/FileObject.vb
rename to Service.EDMIService/Methods/IDB/GetFileObject/FileObject.vb
index 6ffed104..3a315e91 100644
--- a/Service.EDMIService/Methods/GetFileObject/FileObject.vb
+++ b/Service.EDMIService/Methods/IDB/GetFileObject/FileObject.vb
@@ -1,6 +1,6 @@
Imports System.Runtime.Serialization
-Namespace Methods.GetFileObject
+Namespace Methods.IDB.GetFileObject
Public Class FileObject
diff --git a/Service.EDMIService/Methods/GetFileObject/GetFileObjectMethod.vb b/Service.EDMIService/Methods/IDB/GetFileObject/GetFileObjectMethod.vb
similarity index 98%
rename from Service.EDMIService/Methods/GetFileObject/GetFileObjectMethod.vb
rename to Service.EDMIService/Methods/IDB/GetFileObject/GetFileObjectMethod.vb
index 5651a8fb..674131fb 100644
--- a/Service.EDMIService/Methods/GetFileObject/GetFileObjectMethod.vb
+++ b/Service.EDMIService/Methods/IDB/GetFileObject/GetFileObjectMethod.vb
@@ -3,7 +3,7 @@ Imports DigitalData.Modules.Logging
Imports DigitalData.Modules.Language
Imports System.IO
-Namespace Methods.GetFileObject
+Namespace Methods.IDB.GetFileObject
Public Class GetFileObjectMethod
Inherits BaseMethod
diff --git a/Service.EDMIService/Methods/GetFileObject/GetFileObjectRequest.vb b/Service.EDMIService/Methods/IDB/GetFileObject/GetFileObjectRequest.vb
similarity index 88%
rename from Service.EDMIService/Methods/GetFileObject/GetFileObjectRequest.vb
rename to Service.EDMIService/Methods/IDB/GetFileObject/GetFileObjectRequest.vb
index 59aa5e75..2d2484ef 100644
--- a/Service.EDMIService/Methods/GetFileObject/GetFileObjectRequest.vb
+++ b/Service.EDMIService/Methods/IDB/GetFileObject/GetFileObjectRequest.vb
@@ -1,6 +1,6 @@
Imports System.Runtime.Serialization
-Namespace Methods.GetFileObject
+Namespace Methods.IDB.GetFileObject
Public Class GetFileObjectRequest
diff --git a/Service.EDMIService/Methods/GetFileObject/GetFileObjectResponse.vb b/Service.EDMIService/Methods/IDB/GetFileObject/GetFileObjectResponse.vb
similarity index 93%
rename from Service.EDMIService/Methods/GetFileObject/GetFileObjectResponse.vb
rename to Service.EDMIService/Methods/IDB/GetFileObject/GetFileObjectResponse.vb
index 70b7b41c..7942d8fc 100644
--- a/Service.EDMIService/Methods/GetFileObject/GetFileObjectResponse.vb
+++ b/Service.EDMIService/Methods/IDB/GetFileObject/GetFileObjectResponse.vb
@@ -1,6 +1,6 @@
Imports System.Runtime.Serialization
-Namespace Methods.GetFileObject
+Namespace Methods.IDB.GetFileObject
Public Class GetFileObjectResponse
diff --git a/Service.EDMIService/Methods/IDB/NewFile/NewFileMethod.vb b/Service.EDMIService/Methods/IDB/NewFile/NewFileMethod.vb
new file mode 100644
index 00000000..a300c989
--- /dev/null
+++ b/Service.EDMIService/Methods/IDB/NewFile/NewFileMethod.vb
@@ -0,0 +1,235 @@
+Imports System.Data.SqlClient
+Imports DigitalData.Modules.Database
+Imports DigitalData.Modules.Database.MSSQLServer.TransactionMode
+Imports DigitalData.Modules.Logging
+Imports DigitalData.Services.EDMIService.Methods
+Imports DigitalData.Services.EDMIService.GlobalState
+
+Namespace Methods.IDB.NewFile
+ Public Class NewFileMethod
+ Inherits BaseMethod
+
+ Private ReadOnly Connection As SqlConnection
+ Private ReadOnly Transaction As SqlTransaction
+
+ Public Sub New(pLogConfig As LogConfig, pDatabaseIDB As MSSQLServer, pDatabaseECM As MSSQLServer, pGlobalState As GlobalState)
+ MyBase.New(pLogConfig, pDatabaseIDB, pDatabaseECM, pGlobalState)
+
+ Connection = DatabaseIDB.GetConnection()
+ Transaction = Connection.BeginTransaction()
+ End Sub
+
+ Public Function Run(pData As NewFile.NewFileRequest) As Methods.IDB.NewFile.NewFileResponse
+ Dim oFilePath As String = Nothing
+
+ Dim oExistingObjectId = TestFileChecksumExists(pData.File.FileChecksum)
+ If oExistingObjectId > 0 Then
+ Return New NewFile.NewFileResponse(oExistingObjectId)
+ End If
+
+ Try
+
+ Dim oObjectId = NewObjectId(pData.KindType, pData.BusinessEntity, pData.User.UserName)
+ If oObjectId = 0 Then
+ LogAndThrow("Could not create new ObjectId!")
+ End If
+
+ ' Find ObjectStore by Title
+ Logger.Debug("Checking for DataStore [{0}].", pData.StoreName)
+ Dim oStore = GlobalState.ObjectStores.
+ Where(Function(store) store.Title.Equals(pData.StoreName, StringComparison.OrdinalIgnoreCase)).
+ SingleOrDefault()
+
+ If oStore Is Nothing Then
+ LogAndThrow($"DataStore [{pData.StoreName}] does not exist. Exiting.")
+ End If
+
+ ' Get Store base path
+ Dim oBasePath As String = oStore.Path
+ Logger.Debug("Store BasePath is [{0}]", oBasePath)
+
+ ' Get directory by DateImported or, if not supplied, by current date
+ Dim oSubDirectory As String
+ If IsNothing(pData.File.FileImportedAt) Then
+ oSubDirectory = GetDateSubDirectory(Now)
+ Else
+ oSubDirectory = GetDateSubDirectory(pData.File.FileImportedAt)
+ End If
+ Logger.Debug("Subdirectory is [{0}]", oSubDirectory)
+
+ ' Check and create final path, if necessary
+ Dim oFinalPath = IO.Path.Combine(oBasePath, oSubDirectory)
+ If Not IO.Directory.Exists(oFinalPath) Then
+ Try
+ Logger.Debug("Path does not exist, creating: [{0}]", oFinalPath)
+ IO.Directory.CreateDirectory(oFinalPath)
+ Logger.Debug("Created folder [{0}]", oFinalPath)
+ Catch ex As Exception
+ LogAndThrow(ex, $"Store Directory [{oFinalPath}] could not be created!")
+ End Try
+ End If
+ Logger.Debug("Final Directory is [{0}]", oFinalPath)
+
+ ' Get filename
+ Dim oKeepFileName As Boolean = False
+ If oStore.IsArchive Then
+ Logger.Debug("Object Store is an archive: [{0}]", oStore.IsArchive)
+ oKeepFileName = True
+ End If
+
+ Dim oFileName As String = GetFileObjectFileName(oObjectId, pData.File.FileName, oKeepFileName)
+ Logger.Debug("Filename is [{0}]", oFileName)
+
+ oFilePath = IO.Path.Combine(oFinalPath, oFileName)
+ Dim oFileObjectInfo As IO.FileInfo = New IO.FileInfo(oFilePath)
+
+ Dim oFileObjectSize As Long = pData.File.FileContents.Length
+ Dim oFileObjectName As String = oFileObjectInfo.Name
+ Dim oOriginalExtension As String = pData.File.FileInfoRaw.Extension.Substring(1)
+
+ Logger.Debug("File Information for [{0}]:", oFileObjectName)
+ Logger.Debug("Size: [{0}]", oFileObjectSize)
+ Logger.Debug("Original Extension: [{0}]", oOriginalExtension)
+ Logger.Debug("Checksum: [{0}]", pData.File.FileChecksum)
+
+ Try
+ Using oStream = New IO.FileStream(oFilePath, IO.FileMode.Create, IO.FileAccess.Write)
+ Logger.Info("Saving file to path [{0}]", oFilePath)
+ oStream.Write(pData.File.FileContents, 0, oFileObjectSize)
+ oStream.Flush(True)
+ oStream.Close()
+ End Using
+ Catch ex As Exception
+ LogAndThrow(ex, $"Could not write file [{oFilePath}] to disk!")
+ End Try
+
+ '---------------------------------------------------------------------------
+
+ Logger.Info("Creating IDB FileObject for ObjectId [{0}].", oObjectId)
+
+ ' Insert into DB
+ Dim oSQL As String = $"EXEC PRIDB_NEW_IDBFO
+ '{oFinalPath}',
+ '{oFileObjectName}',
+ '{oOriginalExtension}',
+ {oFileObjectSize},
+ '{pData.File.FileChecksum}' ,
+ '{pData.User.UserName}',
+ '{oObjectId}',
+ {oStore.Id}"
+
+ Dim oResult As Boolean = DatabaseIDB.ExecuteNonQueryWithConnectionObject(oSQL, Connection, ExternalTransaction, Transaction)
+
+ If oResult = False Then
+ LogAndThrow("IDB FileObject could not be created!")
+ End If
+
+ '---------------------------------------------------------------------------
+
+ 'TODO: File dates in try catch
+
+ Dim oSystemAttributes As New Dictionary(Of String, Object) From {
+ {"OriginFileName", pData.File.FileName},
+ {"OriginCreationDatetime", pData.File.FileCreatedAt},
+ {"OriginChangedDatetime", pData.File.FileChangedAt}
+ }
+
+ For Each oAttribute As KeyValuePair(Of String, Object) In oSystemAttributes
+ Try
+ ' Dont write empty attributes
+ If oAttribute.Value Is Nothing Then
+ Continue For
+ End If
+
+ Dim oSuccess = Helpers.SetAttributeValue(Connection, Transaction, oObjectId, oAttribute.Key, oAttribute.Value, pData.User.Language, pData.User.UserName)
+ If oSuccess Then
+ Logger.Debug("System Attribute [{0}] written with value [{1}]", oAttribute.Key, oAttribute.Value)
+ Else
+ Logger.Warn("System attribute value could not be written")
+ End If
+ Catch ex As Exception
+ LogAndThrow(ex, $"System attribute [{oAttribute.Key}] could not be written!")
+ End Try
+ Next
+
+ '---------------------------------------------------------------------------
+
+ ' Finally, commit the transaction
+ Transaction?.Commit()
+
+ Return New NewFile.NewFileResponse(oObjectId)
+ Catch ex As Exception
+ Logger.Warn("Error occurred while creating file!")
+ Logger.Error(ex)
+
+ Logger.Info("Cleaning up files.")
+ If Not IsNothing(oFilePath) AndAlso IO.File.Exists(oFilePath) Then
+ Try
+ IO.File.Delete(oFilePath)
+ Catch exInner As Exception
+ Logger.Warn("Error while cleaning up files.")
+ Logger.Error(exInner)
+ End Try
+ End If
+
+ Logger.Info("Rolling back transaction.")
+ Transaction?.Rollback()
+
+ Return New NewFile.NewFileResponse(ex)
+
+ End Try
+ End Function
+
+ Private Function TestFileChecksumExists(pChecksum As String) As Long
+ Try
+ Dim oChecksumSQL = $"SELECT IDB_OBJ_ID FROM TBIDB_FILE_OBJECT WHERE FILE_HASH = '{pChecksum}'"
+ Dim oExistingObjectId As Long = DatabaseIDB.GetScalarValue(oChecksumSQL)
+
+ If oExistingObjectId > 0 Then
+ Logger.Info("Returning early with ObjectId [{0}] because Checksum [{1}] already exists.", oExistingObjectId, pChecksum)
+ Return oExistingObjectId
+ End If
+
+ Return Nothing
+
+ Catch ex As Exception
+ Logger.Error(ex)
+ Return Nothing
+
+ End Try
+ End Function
+
+ Private Function NewObjectId(pKindType As String, pBusinessEntity As String, pWho As String) As Long
+ Try
+ Dim oNewObjectIdSQL = $"DECLARE @NEW_IDB_OBJ_ID BIGINT
+ EXEC PRIDB_NEW_OBJECT '{pKindType}','{pWho}','{pBusinessEntity}',0, @IDB_OBJ_ID = @NEW_IDB_OBJ_ID OUTPUT;
+ SELECT @NEW_IDB_OBJ_ID"
+ Dim oObjectId As Long = DatabaseIDB.GetScalarValueWithConnectionObject(oNewObjectIdSQL, Connection, ExternalTransaction, Transaction)
+ Logger.Info("New Object with Id [{0}] created!", oObjectId)
+
+ If IsNothing(oObjectId) Then
+ LogAndThrow("Could not create new ObjectId!")
+ End If
+
+ Return oObjectId
+ Catch ex As Exception
+ Logger.Error(ex)
+ Return Nothing
+ End Try
+ End Function
+
+ Private Function GetFileObjectFileName(IDB_OBJ_ID As Long, pFilename As String, pKeepFilename As Boolean) As String
+ ' TODO: save actual extensions
+ If pKeepFilename Then
+ Return pFilename
+ Else
+ Return $"{IDB_OBJ_ID}.ddfo"
+ End If
+ End Function
+
+ Private Function GetDateSubDirectory(pDate As Date) As String
+ Return IO.Path.Combine(pDate.ToString("yyyy"), pDate.ToString("MM"), pDate.ToString("dd"))
+ End Function
+ End Class
+
+End Namespace
\ No newline at end of file
diff --git a/Service.EDMIService/Methods/NewFile/NewFileRequest.vb b/Service.EDMIService/Methods/IDB/NewFile/NewFileRequest.vb
similarity index 96%
rename from Service.EDMIService/Methods/NewFile/NewFileRequest.vb
rename to Service.EDMIService/Methods/IDB/NewFile/NewFileRequest.vb
index 8e35ca9d..3c9cadfb 100644
--- a/Service.EDMIService/Methods/NewFile/NewFileRequest.vb
+++ b/Service.EDMIService/Methods/IDB/NewFile/NewFileRequest.vb
@@ -1,7 +1,7 @@
Imports System.Runtime.Serialization
Imports DigitalData.Modules.ZooFlow.State
-Namespace Methods.NewFile
+Namespace Methods.IDB.NewFile
Public Class NewFileRequest
diff --git a/Service.EDMIService/Methods/SetAttributeValue/SetAttributeValueResponse.vb b/Service.EDMIService/Methods/IDB/NewFile/NewFileResponse.vb
similarity index 94%
rename from Service.EDMIService/Methods/SetAttributeValue/SetAttributeValueResponse.vb
rename to Service.EDMIService/Methods/IDB/NewFile/NewFileResponse.vb
index a8633736..bbc93107 100644
--- a/Service.EDMIService/Methods/SetAttributeValue/SetAttributeValueResponse.vb
+++ b/Service.EDMIService/Methods/IDB/NewFile/NewFileResponse.vb
@@ -1,6 +1,6 @@
Imports System.Runtime.Serialization
-Namespace Methods.NewFile
+Namespace Methods.IDB.NewFile
Public Class NewFileResponse
diff --git a/Service.EDMIService/Methods/SetAttributeValue/SetAttributeValueMethod.vb b/Service.EDMIService/Methods/IDB/SetAttributeValue/SetAttributeValueMethod.vb
similarity index 96%
rename from Service.EDMIService/Methods/SetAttributeValue/SetAttributeValueMethod.vb
rename to Service.EDMIService/Methods/IDB/SetAttributeValue/SetAttributeValueMethod.vb
index f64ef257..f6185daf 100644
--- a/Service.EDMIService/Methods/SetAttributeValue/SetAttributeValueMethod.vb
+++ b/Service.EDMIService/Methods/IDB/SetAttributeValue/SetAttributeValueMethod.vb
@@ -3,7 +3,7 @@ Imports DigitalData.Modules.Database
Imports DigitalData.Services.EDMIService.IDB
Imports System.Data.SqlClient
-Namespace Methods.SetAttributeValue
+Namespace Methods.IDB.SetAttributeValue
Public Class SetAttributeValueMethod
Inherits BaseMethod
diff --git a/Service.EDMIService/Methods/SetAttributeValue/SetAttributeValueRequest.vb b/Service.EDMIService/Methods/IDB/SetAttributeValue/SetAttributeValueRequest.vb
similarity index 93%
rename from Service.EDMIService/Methods/SetAttributeValue/SetAttributeValueRequest.vb
rename to Service.EDMIService/Methods/IDB/SetAttributeValue/SetAttributeValueRequest.vb
index 413987ed..04085ee9 100644
--- a/Service.EDMIService/Methods/SetAttributeValue/SetAttributeValueRequest.vb
+++ b/Service.EDMIService/Methods/IDB/SetAttributeValue/SetAttributeValueRequest.vb
@@ -1,6 +1,6 @@
Imports System.Runtime.Serialization
-Namespace Methods.SetAttributeValue
+Namespace Methods.IDB.SetAttributeValue
Public Class SetAttributeValueRequest
diff --git a/Service.EDMIService/Methods/NewFile/NewFileResponse.vb b/Service.EDMIService/Methods/IDB/SetAttributeValue/SetAttributeValueResponse.vb
similarity index 92%
rename from Service.EDMIService/Methods/NewFile/NewFileResponse.vb
rename to Service.EDMIService/Methods/IDB/SetAttributeValue/SetAttributeValueResponse.vb
index 6537e477..40702d3e 100644
--- a/Service.EDMIService/Methods/NewFile/NewFileResponse.vb
+++ b/Service.EDMIService/Methods/IDB/SetAttributeValue/SetAttributeValueResponse.vb
@@ -1,6 +1,6 @@
Imports System.Runtime.Serialization
-Namespace Methods.SetAttributeValue
+Namespace Methods.IDB.SetAttributeValue
Public Class SetAttributeValueResponse
diff --git a/Service.EDMIService/Methods/NewFile/NewFileMethod.vb b/Service.EDMIService/Methods/NewFile/NewFileMethod.vb
deleted file mode 100644
index 0cdc8d81..00000000
--- a/Service.EDMIService/Methods/NewFile/NewFileMethod.vb
+++ /dev/null
@@ -1,232 +0,0 @@
-Imports System.Data.SqlClient
-Imports DigitalData.Modules.Database
-Imports DigitalData.Modules.Database.MSSQLServer.TransactionMode
-Imports DigitalData.Modules.Logging
-Imports DigitalData.Services.EDMIService.Methods
-Imports DigitalData.Services.EDMIService.GlobalState
-
-Public Class NewFileMethod
- Inherits BaseMethod
-
- Private ReadOnly Connection As SqlConnection
- Private ReadOnly Transaction As SqlTransaction
-
- Public Sub New(pLogConfig As LogConfig, pDatabaseIDB As MSSQLServer, pDatabaseECM As MSSQLServer, pGlobalState As GlobalState)
- MyBase.New(pLogConfig, pDatabaseIDB, pDatabaseECM, pGlobalState)
-
- Connection = DatabaseIDB.GetConnection()
- Transaction = Connection.BeginTransaction()
- End Sub
-
- Public Function Run(pData As NewFile.NewFileRequest) As NewFile.NewFileResponse
- Dim oFilePath As String = Nothing
-
- Dim oExistingObjectId = TestFileChecksumExists(pData.File.FileChecksum)
- If oExistingObjectId > 0 Then
- Return New NewFile.NewFileResponse(oExistingObjectId)
- End If
-
- Try
-
- Dim oObjectId = NewObjectId(pData.KindType, pData.BusinessEntity, pData.User.UserName)
- If oObjectId = 0 Then
- LogAndThrow("Could not create new ObjectId!")
- End If
-
- ' Find ObjectStore by Title
- Logger.Debug("Checking for DataStore [{0}].", pData.StoreName)
- Dim oStore = GlobalState.ObjectStores.
- Where(Function(store) store.Title.Equals(pData.StoreName, StringComparison.OrdinalIgnoreCase)).
- SingleOrDefault()
-
- If oStore Is Nothing Then
- LogAndThrow($"DataStore [{pData.StoreName}] does not exist. Exiting.")
- End If
-
- ' Get Store base path
- Dim oBasePath As String = oStore.Path
- Logger.Debug("Store BasePath is [{0}]", oBasePath)
-
- ' Get directory by DateImported or, if not supplied, by current date
- Dim oSubDirectory As String
- If IsNothing(pData.File.FileImportedAt) Then
- oSubDirectory = GetDateSubDirectory(Now)
- Else
- oSubDirectory = GetDateSubDirectory(pData.File.FileImportedAt)
- End If
- Logger.Debug("Subdirectory is [{0}]", oSubDirectory)
-
- ' Check and create final path, if necessary
- Dim oFinalPath = IO.Path.Combine(oBasePath, oSubDirectory)
- If Not IO.Directory.Exists(oFinalPath) Then
- Try
- Logger.Debug("Path does not exist, creating: [{0}]", oFinalPath)
- IO.Directory.CreateDirectory(oFinalPath)
- Logger.Debug("Created folder [{0}]", oFinalPath)
- Catch ex As Exception
- LogAndThrow(ex, $"Store Directory [{oFinalPath}] could not be created!")
- End Try
- End If
- Logger.Debug("Final Directory is [{0}]", oFinalPath)
-
- ' Get filename
- Dim oKeepFileName As Boolean = False
- If oStore.IsArchive Then
- Logger.Debug("Object Store is an archive: [{0}]", oStore.IsArchive)
- oKeepFileName = True
- End If
-
- Dim oFileName As String = GetFileObjectFileName(oObjectId, pData.File.FileName, oKeepFileName)
- Logger.Debug("Filename is [{0}]", oFileName)
-
- oFilePath = IO.Path.Combine(oFinalPath, oFileName)
- Dim oFileObjectInfo As IO.FileInfo = New IO.FileInfo(oFilePath)
-
- Dim oFileObjectSize As Long = pData.File.FileContents.Length
- Dim oFileObjectName As String = oFileObjectInfo.Name
- Dim oOriginalExtension As String = pData.File.FileInfoRaw.Extension.Substring(1)
-
- Logger.Debug("File Information for [{0}]:", oFileObjectName)
- Logger.Debug("Size: [{0}]", oFileObjectSize)
- Logger.Debug("Original Extension: [{0}]", oOriginalExtension)
- Logger.Debug("Checksum: [{0}]", pData.File.FileChecksum)
-
- Try
- Using oStream = New IO.FileStream(oFilePath, IO.FileMode.Create, IO.FileAccess.Write)
- Logger.Info("Saving file to path [{0}]", oFilePath)
- oStream.Write(pData.File.FileContents, 0, oFileObjectSize)
- oStream.Flush(True)
- oStream.Close()
- End Using
- Catch ex As Exception
- LogAndThrow(ex, $"Could not write file [{oFilePath}] to disk!")
- End Try
-
- '---------------------------------------------------------------------------
-
- Logger.Info("Creating IDB FileObject for ObjectId [{0}].", oObjectId)
-
- ' Insert into DB
- Dim oSQL As String = $"EXEC PRIDB_NEW_IDBFO
- '{oFinalPath}',
- '{oFileObjectName}',
- '{oOriginalExtension}',
- {oFileObjectSize},
- '{pData.File.FileChecksum}' ,
- '{pData.User.UserName}',
- '{oObjectId}',
- {oStore.Id}"
-
- Dim oResult As Boolean = DatabaseIDB.ExecuteNonQueryWithConnectionObject(oSQL, Connection, ExternalTransaction, Transaction)
-
- If oResult = False Then
- LogAndThrow("IDB FileObject could not be created!")
- End If
-
- '---------------------------------------------------------------------------
-
- 'TODO: File dates in try catch
-
- Dim oSystemAttributes As New Dictionary(Of String, Object) From {
- {"OriginFileName", pData.File.FileName},
- {"OriginCreationDatetime", pData.File.FileCreatedAt},
- {"OriginChangedDatetime", pData.File.FileChangedAt}
- }
-
- For Each oAttribute As KeyValuePair(Of String, Object) In oSystemAttributes
- Try
- ' Dont write empty attributes
- If oAttribute.Value Is Nothing Then
- Continue For
- End If
-
- Dim oSuccess = Helpers.SetAttributeValue(Connection, Transaction, oObjectId, oAttribute.Key, oAttribute.Value, pData.User.Language, pData.User.UserName)
- If oSuccess Then
- Logger.Debug("System Attribute [{0}] written with value [{1}]", oAttribute.Key, oAttribute.Value)
- Else
- Logger.Warn("System attribute value could not be written")
- End If
- Catch ex As Exception
- LogAndThrow(ex, $"System attribute [{oAttribute.Key}] could not be written!")
- End Try
- Next
-
- '---------------------------------------------------------------------------
-
- ' Finally, commit the transaction
- Transaction?.Commit()
-
- Return New NewFile.NewFileResponse(oObjectId)
- Catch ex As Exception
- Logger.Warn("Error occurred while creating file!")
- Logger.Error(ex)
-
- Logger.Info("Cleaning up files.")
- If Not IsNothing(oFilePath) AndAlso IO.File.Exists(oFilePath) Then
- Try
- IO.File.Delete(oFilePath)
- Catch exInner As Exception
- Logger.Warn("Error while cleaning up files.")
- Logger.Error(exInner)
- End Try
- End If
-
- Logger.Info("Rolling back transaction.")
- Transaction?.Rollback()
-
- Return New NewFile.NewFileResponse(ex)
-
- End Try
- End Function
-
- Private Function TestFileChecksumExists(pChecksum As String) As Long
- Try
- Dim oChecksumSQL = $"SELECT IDB_OBJ_ID FROM TBIDB_FILE_OBJECT WHERE FILE_HASH = '{pChecksum}'"
- Dim oExistingObjectId As Long = DatabaseIDB.GetScalarValue(oChecksumSQL)
-
- If oExistingObjectId > 0 Then
- Logger.Info("Returning early with ObjectId [{0}] because Checksum [{1}] already exists.", oExistingObjectId, pChecksum)
- Return oExistingObjectId
- End If
-
- Return Nothing
-
- Catch ex As Exception
- Logger.Error(ex)
- Return Nothing
-
- End Try
- End Function
-
- Private Function NewObjectId(pKindType As String, pBusinessEntity As String, pWho As String) As Long
- Try
- Dim oNewObjectIdSQL = $"DECLARE @NEW_IDB_OBJ_ID BIGINT
- EXEC PRIDB_NEW_OBJECT '{pKindType}','{pWho}','{pBusinessEntity}',0, @IDB_OBJ_ID = @NEW_IDB_OBJ_ID OUTPUT;
- SELECT @NEW_IDB_OBJ_ID"
- Dim oObjectId As Long = DatabaseIDB.GetScalarValueWithConnectionObject(oNewObjectIdSQL, Connection, ExternalTransaction, Transaction)
- Logger.Info("New Object with Id [{0}] created!", oObjectId)
-
- If IsNothing(oObjectId) Then
- LogAndThrow("Could not create new ObjectId!")
- End If
-
- Return oObjectId
- Catch ex As Exception
- Logger.Error(ex)
- Return Nothing
- End Try
- End Function
-
- Private Function GetFileObjectFileName(IDB_OBJ_ID As Long, pFilename As String, pKeepFilename As Boolean) As String
- ' TODO: save actual extensions
- If pKeepFilename Then
- Return pFilename
- Else
- Return $"{IDB_OBJ_ID}.ddfo"
- End If
- End Function
-
- Private Function GetDateSubDirectory(pDate As Date) As String
- Return IO.Path.Combine(pDate.ToString("yyyy"), pDate.ToString("MM"), pDate.ToString("dd"))
- End Function
-End Class
diff --git a/Service.EDMIService/My Project/AssemblyInfo.vb b/Service.EDMIService/My Project/AssemblyInfo.vb
index 23faefe3..3f0c9b0d 100644
--- a/Service.EDMIService/My Project/AssemblyInfo.vb
+++ b/Service.EDMIService/My Project/AssemblyInfo.vb
@@ -12,8 +12,8 @@ Imports System.Runtime.InteropServices
-
-
+
+
@@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices
' übernehmen, indem Sie "*" eingeben:
'
-
-
+
+
diff --git a/Service.EDMIService/WindowsService.vb b/Service.EDMIService/WindowsService.vb
index e2752393..b87b31d0 100644
--- a/Service.EDMIService/WindowsService.vb
+++ b/Service.EDMIService/WindowsService.vb
@@ -83,6 +83,10 @@ Public Class WindowsService
GlobalState.LoadObjectStores()
GlobalState.LoadConnections()
+ Logger.Debug("Loading Client Config")
+ Logger.Debug("ForceDirectDatabaseAccess: {0}", Config.ClientConfig.ForceDirectDatabaseAccess)
+ GlobalState.ClientConfig = Config.ClientConfig
+
Logger.Debug("Starting Scheduler")
Scheduler.Start()