diff --git a/Modules.EDMIAPI/Client.vb b/Modules.EDMIAPI/Client.vb
index 62e57d6e..6042c700 100644
--- a/Modules.EDMIAPI/Client.vb
+++ b/Modules.EDMIAPI/Client.vb
@@ -115,6 +115,21 @@ Public Class Client
End Try
End Function
+ '''
+ ''' Aborts the channel and creates a new connection
+ '''
+ Public Sub Reconnect()
+ _logger.Warn("Connection faulted. Trying to reconnect..")
+
+ Try
+ _channel.Abort()
+ _channel = GetChannel()
+ _channel.Open()
+ Catch ex As Exception
+ _logger.Error(ex)
+ End Try
+ End Sub
+
'''
''' Imports a file from a filepath, creating a IDB ObjectId and Filesystem Object
'''
@@ -220,7 +235,6 @@ Public Class Client
End Try
End Function
-
'''
''' Sets a value to an attribute
'''
@@ -520,9 +534,13 @@ Public Class Client
End Try
End Function
- Public Function GetDatatableFromIDB(SQL As String) As TableResult
+ Public Function GetDatatableFromIDB(pSQL As String, Optional pConnectionId As Integer = 0) As GetDatatableResponse
Try
- Dim oResponse = _channel.ReturnDatatable_MSSQL_IDB(SQL)
+ Dim oResponse = _channel.ReturnDatatable(New GetDatatableRequest() With {
+ .SqlCommand = pSQL,
+ .NamedDatabase = DatabaseName.IDB,
+ .ConnectionId = pConnectionId
+ })
Return oResponse
Catch ex As Exception
_logger.Error(ex)
@@ -530,9 +548,13 @@ Public Class Client
End Try
End Function
- Public Async Function GetDatatableFromIDBAsync(SQL As String) As Task(Of TableResult)
+ Public Async Function GetDatatableFromIDBAsync(pSQL As String, Optional pConnectionId As Integer = 0) As Task(Of GetDatatableResponse)
Try
- Dim oResponse = Await _channel.ReturnDatatable_MSSQL_IDBAsync(SQL)
+ Dim oResponse = Await _channel.ReturnDatatableAsync(New GetDatatableRequest() With {
+ .SqlCommand = pSQL,
+ .NamedDatabase = DatabaseName.IDB,
+ .ConnectionId = pConnectionId
+ })
Return oResponse
Catch ex As Exception
_logger.Error(ex)
@@ -540,9 +562,13 @@ Public Class Client
End Try
End Function
- Public Function GetScalarValueFromIDB(SQL As String) As ScalarResult
+ Public Function GetScalarValueFromIDB(pSQL As String, Optional pConnectionId As Integer = 0) As GetScalarValueResponse
Try
- Dim oResponse = _channel.ReturnScalar_MSSQL_IDB(SQL)
+ Dim oResponse = _channel.ReturnScalarValue(New GetScalarValueRequest() With {
+ .SqlCommand = pSQL,
+ .NamedDatabase = DatabaseName.IDB,
+ .ConnectionId = pConnectionId
+ })
Return oResponse
Catch ex As Exception
_logger.Error(ex)
@@ -550,9 +576,13 @@ Public Class Client
End Try
End Function
- Public Async Function GetScalarValueFromIDBAsync(SQL As String) As Task(Of ScalarResult)
+ Public Async Function GetScalarValueFromIDBAsync(pSQL As String, Optional pConnectionId As Integer = 0) As Task(Of GetScalarValueResponse)
Try
- Dim oResponse = Await _channel.ReturnScalar_MSSQL_IDBAsync(SQL)
+ Dim oResponse = Await _channel.ReturnScalarValueAsync(New GetScalarValueRequest() With {
+ .SqlCommand = pSQL,
+ .NamedDatabase = DatabaseName.IDB,
+ .ConnectionId = pConnectionId
+ })
Return oResponse
Catch ex As Exception
_logger.Error(ex)
@@ -631,21 +661,8 @@ Public Class Client
End Try
End Function
- '''
- ''' Aborts the channel and creates a new connection
- '''
- Public Sub Reconnect()
- _logger.Warn("Connection faulted. Trying to reconnect..")
-
- Try
- _channel.Abort()
- _channel = GetChannel()
- _channel.Open()
- Catch ex As Exception
- _logger.Error(ex)
- End Try
- End Sub
+#Region "Private Functions"
'''
''' Creates a channel and adds a Faulted-Handler
'''
@@ -671,8 +688,7 @@ Public Class Client
Private Function GetUserName(pOverrideName) As String
Return NotNull(pOverrideName, Environment.UserName)
End Function
-
-
+#End Region
#Region "Response Classes"
Public Class StreamedFile
diff --git a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMI.API.EDMIServiceReference.GetDatatableResponse.datasource b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMI.API.EDMIServiceReference.GetDatatableResponse.datasource
new file mode 100644
index 00000000..47b7add3
--- /dev/null
+++ b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMI.API.EDMIServiceReference.GetDatatableResponse.datasource
@@ -0,0 +1,10 @@
+
+
+
+ DigitalData.Modules.EDMI.API.EDMIServiceReference.GetDatatableResponse, 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.GetScalarValueResponse.datasource b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMI.API.EDMIServiceReference.GetScalarValueResponse.datasource
new file mode 100644
index 00000000..4df80cb8
--- /dev/null
+++ b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMI.API.EDMIServiceReference.GetScalarValueResponse.datasource
@@ -0,0 +1,10 @@
+
+
+
+ DigitalData.Modules.EDMI.API.EDMIServiceReference.GetScalarValueResponse, Connected Services.EDMIServiceReference.Reference.vb.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
+
\ No newline at end of file
diff --git a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Methods.Database.GetDatatable.xsd b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Methods.Database.GetDatatable.xsd
new file mode 100644
index 00000000..68b9405d
--- /dev/null
+++ b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Methods.Database.GetDatatable.xsd
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Methods.Database.GetScalarValue.xsd b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Methods.Database.GetScalarValue.xsd
new file mode 100644
index 00000000..2453f626
--- /dev/null
+++ b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Methods.Database.GetScalarValue.xsd
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Methods.Database.xsd b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Methods.Database.xsd
new file mode 100644
index 00000000..bdacc43e
--- /dev/null
+++ b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.Methods.Database.xsd
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.wsdl b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.wsdl
index a5f4ff8e..8c7c0df6 100644
--- a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.wsdl
+++ b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.wsdl
@@ -8,6 +8,9 @@
+
+
+
@@ -38,6 +41,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
@@ -194,6 +209,14 @@
+
+
+
+
+
+
+
+
diff --git a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.xsd b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.xsd
index 38cca34e..526cecdd 100644
--- a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.xsd
+++ b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/DigitalData.Services.EDMIService.xsd
@@ -1,6 +1,8 @@
+
+
@@ -35,6 +37,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -45,7 +75,7 @@
-
+
@@ -59,7 +89,7 @@
-
+
@@ -73,7 +103,7 @@
-
+
@@ -87,7 +117,7 @@
-
+
@@ -101,7 +131,7 @@
-
+
@@ -115,7 +145,7 @@
-
+
@@ -129,7 +159,7 @@
-
+
@@ -143,7 +173,7 @@
-
+
@@ -157,63 +187,63 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -227,7 +257,7 @@
-
+
@@ -243,7 +273,7 @@
-
+
diff --git a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/Reference.svcmap b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/Reference.svcmap
index 3fd71f59..96647e1a 100644
--- a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/Reference.svcmap
+++ b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/Reference.svcmap
@@ -30,6 +30,9 @@
+
+
+
diff --git a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/Reference.vb b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/Reference.vb
index 732d3ae2..07209323 100644
--- a/Modules.EDMIAPI/Connected Services/EDMIServiceReference/Reference.vb
+++ b/Modules.EDMIAPI/Connected Services/EDMIServiceReference/Reference.vb
@@ -23,6 +23,8 @@ Namespace EDMIServiceReference
System.SerializableAttribute(), _
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.NewFileResponse)), _
System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.SetAttributeValueResponse)), _
System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.ImportFileResponse)), _
@@ -117,6 +119,12 @@ Namespace EDMIServiceReference
System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.BaseFault)), _
System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.DataTableDoesNotExistFault)), _
System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.ObjectDoesNotExistFault)), _
+ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.GetDatatableRequest)), _
+ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.GetDatatableResponse)), _
+ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.DatabaseType)), _
+ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.DatabaseName)), _
+ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.GetScalarValueRequest)), _
+ System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.GetScalarValueResponse)), _
System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.NewFileRequest)), _
System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.NewFileResponse)), _
System.Runtime.Serialization.KnownTypeAttribute(GetType(EDMIServiceReference.FileProperties)), _
@@ -163,6 +171,88 @@ Namespace EDMIServiceReference
Inherits EDMIServiceReference.BaseResponse
End Class
+ _
+ Partial Public Class GetDatatableResponse
+ 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 GetScalarValueResponse
+ Inherits EDMIServiceReference.BaseResponse
+
+ _
+ Private ScalarField As Object
+
+ _
+ Public Property Scalar() As Object
+ Get
+ Return Me.ScalarField
+ End Get
+ Set
+ If (Object.ReferenceEquals(Me.ScalarField, value) <> true) Then
+ Me.ScalarField = value
+ Me.RaisePropertyChanged("Scalar")
+ End If
+ End Set
+ End Property
+ End Class
+
_
+ Partial Public Class GetDatatableRequest
+ 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
+
+ _
+ Public Enum DatabaseType As Integer
+
+ _
+ MSSQL = 0
+
+ _
+ Oracle = 1
+
+ _
+ ODBC = 2
+ End Enum
+
+ _
+ Public Enum DatabaseName As Integer
+
+ _
+ None = 0
+
+ _
+ ECM = 1
+
+ _
+ IDB = 2
+ End Enum
+
+ _
+ Partial Public Class GetScalarValueRequest
+ 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
+
_
Function ReturnDatatableFromCacheAsync(ByVal Name As String, ByVal FilterExpression As String, ByVal SortByColumn As String) As System.Threading.Tasks.Task(Of EDMIServiceReference.TableResult)
+ _
+ Function ReturnDatatable(ByVal pData As EDMIServiceReference.GetDatatableRequest) As EDMIServiceReference.GetDatatableResponse
+
+ _
+ Function ReturnDatatableAsync(ByVal pData As EDMIServiceReference.GetDatatableRequest) As System.Threading.Tasks.Task(Of EDMIServiceReference.GetDatatableResponse)
+
+ _
+ Function ReturnScalarValue(ByVal pData As EDMIServiceReference.GetScalarValueRequest) As EDMIServiceReference.GetScalarValueResponse
+
+ _
+ Function ReturnScalarValueAsync(ByVal pData As EDMIServiceReference.GetScalarValueRequest) As System.Threading.Tasks.Task(Of EDMIServiceReference.GetScalarValueResponse)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Modules.EDMIAPI/DatabaseWithFallback.vb b/Modules.EDMIAPI/DatabaseWithFallback.vb
index 63dea9d3..60e145cc 100644
--- a/Modules.EDMIAPI/DatabaseWithFallback.vb
+++ b/Modules.EDMIAPI/DatabaseWithFallback.vb
@@ -22,7 +22,11 @@ Public Class DatabaseWithFallback
End Class
Public Property Tables As New List(Of Table) From {
- New Table With {.DatabaseType = DatabaseType.IDB, .TableName = "TBIDB_ATTRIBUTE", .SQLCommand = "SELECT * FROM TBIDB_ATTRIBUTE"}
+ New Table With {
+ .DatabaseType = Constants.DatabaseType.IDB,
+ .TableName = "TBIDB_ATTRIBUTE",
+ .SQLCommand = "SELECT * FROM TBIDB_ATTRIBUTE"
+ }
}
@@ -62,7 +66,7 @@ Public Class DatabaseWithFallback
End Try
End Function
- Private Function GetDatatableFromDatabase(SQLCommand As String, DatabaseType As DatabaseType)
+ Private Function GetDatatableFromDatabase(SQLCommand As String, DatabaseType As Constants.DatabaseType)
Try
Select Case DatabaseType
Case DatabaseType.ECM
diff --git a/Modules.EDMIAPI/EDMI.API.vbproj b/Modules.EDMIAPI/EDMI.API.vbproj
index 2090e205..757851e6 100644
--- a/Modules.EDMIAPI/EDMI.API.vbproj
+++ b/Modules.EDMIAPI/EDMI.API.vbproj
@@ -125,9 +125,15 @@
Reference.svcmap
+
+ Reference.svcmap
+
Reference.svcmap
+
+ Reference.svcmap
+
Reference.svcmap
@@ -164,6 +170,15 @@
Designer
+
+ Designer
+
+
+ Designer
+
+
+ Designer
+
Designer
diff --git a/Service.EDMIService/Methods/Database/DatabaseName.vb b/Service.EDMIService/Methods/Database/DatabaseName.vb
new file mode 100644
index 00000000..96d583fb
--- /dev/null
+++ b/Service.EDMIService/Methods/Database/DatabaseName.vb
@@ -0,0 +1,7 @@
+Namespace Methods.Database
+ Public Enum DatabaseName
+ None
+ ECM
+ IDB
+ End Enum
+End Namespace
diff --git a/Service.EDMIService/Methods/Database/DatabaseType.vb b/Service.EDMIService/Methods/Database/DatabaseType.vb
new file mode 100644
index 00000000..dc272f5c
--- /dev/null
+++ b/Service.EDMIService/Methods/Database/DatabaseType.vb
@@ -0,0 +1,7 @@
+Namespace Methods.Database
+ Public Enum DatabaseType
+ MSSQL
+ Oracle
+ ODBC
+ End Enum
+End Namespace
\ No newline at end of file
diff --git a/Service.EDMIService/Methods/Database/GetDatatable/GetDatatableMethod.vb b/Service.EDMIService/Methods/Database/GetDatatable/GetDatatableMethod.vb
new file mode 100644
index 00000000..f44a8c70
--- /dev/null
+++ b/Service.EDMIService/Methods/Database/GetDatatable/GetDatatableMethod.vb
@@ -0,0 +1,70 @@
+Imports DigitalData.Modules.Database
+Imports DigitalData.Modules.Logging
+
+Namespace Methods.Database.GetDatatable
+ '''
+ ''' Database method for retrieving a Datatable from an SQL Command and a Connection Id.
+ '''
+ Public Class GetDatatableMethod
+ 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
+
+ '''
+ ''' Returns a Datatable. If ConnectionId is empty, uses the configured DD_ECM Database.
+ '''
+ Public Function Run(pData As GetDatatableRequest) As GetDatatableResponse
+ Try
+ Dim oDatatable As DataTable = Nothing
+
+ Select Case pData.DatabaseType
+ Case DatabaseType.MSSQL
+ If pData.NamedDatabase = DatabaseName.None Then
+ oDatatable = GetDatatableByConnectionId(pData.SqlCommand, pData.ConnectionId)
+
+ ElseIf pData.NamedDatabase = DatabaseName.ECM Then
+ oDatatable = DatabaseECM.GetDatatable(pData.SqlCommand)
+
+ ElseIf pData.NamedDatabase = DatabaseName.IDB Then
+ oDatatable = DatabaseIDB.GetDatatable(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
+
+ If oDatatable Is Nothing Then
+ LogAndThrow($"SQL Command did not return any results: [{pData.SqlCommand}]!")
+ End If
+
+ Return New GetDatatableResponse(oDatatable)
+ Catch ex As Exception
+ Logger.Warn("Error occurred while getting database table!")
+ Return New GetDatatableResponse(ex)
+ End Try
+ End Function
+
+ Private Function GetDatatableByConnectionId(pSQLCommand As String, pConnectionId As Integer) As DataTable
+ If pConnectionId = 0 Then
+ Return DatabaseECM.GetDatatable(pSQLCommand)
+ Else
+ Dim oConnectionString = DatabaseECM.Get_ConnectionStringforID(pConnectionId)
+ If oConnectionString <> "" Then
+
+ Return DatabaseIDB.GetDatatableWithConnection(pSQLCommand, oConnectionString)
+ Else
+ Logger.Warn("ConnectionId [{0}] could not be translated into ConnectionString. Exiting.")
+ Return Nothing
+ End If
+ End If
+ End Function
+ End Class
+
+End Namespace
\ No newline at end of file
diff --git a/Service.EDMIService/Methods/Database/GetDatatable/GetDatatableRequest.vb b/Service.EDMIService/Methods/Database/GetDatatable/GetDatatableRequest.vb
new file mode 100644
index 00000000..04d7a6e5
--- /dev/null
+++ b/Service.EDMIService/Methods/Database/GetDatatable/GetDatatableRequest.vb
@@ -0,0 +1,8 @@
+Namespace Methods.Database.GetDatatable
+ Public Class GetDatatableRequest
+ 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/GetDatatable/GetDatatableResponse.vb b/Service.EDMIService/Methods/Database/GetDatatable/GetDatatableResponse.vb
new file mode 100644
index 00000000..9de6c5ba
--- /dev/null
+++ b/Service.EDMIService/Methods/Database/GetDatatable/GetDatatableResponse.vb
@@ -0,0 +1,24 @@
+Imports System.Runtime.Serialization
+
+Namespace Methods.Database.GetDatatable
+
+
+
+ Public Class GetDatatableResponse
+ Inherits Messages.BaseResponse
+
+
+ Public Property Table As DataTable
+
+ Public Sub New(pTable As DataTable)
+ MyBase.New()
+ Table = pTable
+ 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/Database/GetScalarValue/GetScalarValueMethod.vb b/Service.EDMIService/Methods/Database/GetScalarValue/GetScalarValueMethod.vb
new file mode 100644
index 00000000..0236321c
--- /dev/null
+++ b/Service.EDMIService/Methods/Database/GetScalarValue/GetScalarValueMethod.vb
@@ -0,0 +1,70 @@
+Imports DigitalData.Modules.Database
+Imports DigitalData.Modules.Logging
+
+Namespace Methods.Database.GetScalarValue
+ '''
+ ''' Database method for retrieving a Single Value from an SQL Command and a Connection Id.
+ '''
+ Public Class GetScalarValueMethod
+ 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
+
+ '''
+ ''' Returns a Single Value. If ConnectionId is empty, uses the configured DD_ECM Database.
+ '''
+ Public Function Run(pData As GetScalarValueRequest) As GetScalarValueResponse
+ Try
+ Dim oDatatable As DataTable = Nothing
+
+ Select Case pData.DatabaseType
+ Case DatabaseType.MSSQL
+ If pData.NamedDatabase = DatabaseName.None Then
+ oDatatable = GetScalarValueByConnectionId(pData.SqlCommand, pData.ConnectionId)
+
+ ElseIf pData.NamedDatabase = DatabaseName.ECM Then
+ oDatatable = DatabaseECM.GetScalarValue(pData.SqlCommand)
+
+ ElseIf pData.NamedDatabase = DatabaseName.IDB Then
+ oDatatable = DatabaseIDB.GetScalarValue(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
+
+ If oDatatable Is Nothing Then
+ LogAndThrow($"SQL Command did not return any results: [{pData.SqlCommand}]!")
+ End If
+
+ Return New GetScalarValueResponse(oDatatable)
+ Catch ex As Exception
+ Logger.Warn("Error occurred while getting database scalar value!")
+ Return New GetScalarValueResponse(ex)
+ End Try
+ End Function
+
+ Private Function GetScalarValueByConnectionId(pSQLCommand As String, pConnectionId As Integer) As DataTable
+ If pConnectionId = 0 Then
+ Return DatabaseECM.GetScalarValue(pSQLCommand)
+ Else
+ Dim oConnectionString = DatabaseECM.Get_ConnectionStringforID(pConnectionId)
+ If oConnectionString <> "" Then
+
+ Return DatabaseIDB.GetScalarValueWithConnection(pSQLCommand, oConnectionString)
+ Else
+ Logger.Warn("ConnectionId [{0}] could not be translated into ConnectionString. Exiting.")
+ Return Nothing
+ End If
+ End If
+ End Function
+ End Class
+
+End Namespace
\ No newline at end of file
diff --git a/Service.EDMIService/Methods/Database/GetScalarValue/GetScalarValueRequest.vb b/Service.EDMIService/Methods/Database/GetScalarValue/GetScalarValueRequest.vb
new file mode 100644
index 00000000..bca7bc9e
--- /dev/null
+++ b/Service.EDMIService/Methods/Database/GetScalarValue/GetScalarValueRequest.vb
@@ -0,0 +1,8 @@
+Namespace Methods.Database.GetScalarValue
+ Public Class GetScalarValueRequest
+ 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/GetScalarValue/GetScalarValueResponse.vb b/Service.EDMIService/Methods/Database/GetScalarValue/GetScalarValueResponse.vb
new file mode 100644
index 00000000..c9993276
--- /dev/null
+++ b/Service.EDMIService/Methods/Database/GetScalarValue/GetScalarValueResponse.vb
@@ -0,0 +1,24 @@
+Imports System.Runtime.Serialization
+
+Namespace Methods.Database.GetScalarValue
+
+
+
+ Public Class GetScalarValueResponse
+ Inherits Messages.BaseResponse
+
+
+ Public Property Scalar As Object
+
+ Public Sub New(pScalarValue As Object)
+ MyBase.New()
+ Scalar = pScalarValue
+ End Sub
+
+ Public Sub New(pException As Exception, Optional pDetails As String = "")
+ MyBase.New(pException, pDetails)
+ End Sub
+ End Class
+
+End Namespace
+