EDMI.API: WIP Client
This commit is contained in:
parent
9168474530
commit
464dc1d4ad
@ -18,43 +18,12 @@ Public Class Client
|
||||
Private _dummy_table_attributes As DataTable
|
||||
Private _channel As IEDMIServiceChannel
|
||||
|
||||
Public Class StreamedFile
|
||||
Public Stream As MemoryStream
|
||||
Public FileName As String
|
||||
End Class
|
||||
|
||||
Public Class FileList
|
||||
Public Datatable As DataTable
|
||||
End Class
|
||||
|
||||
Public Class DocumentInfo
|
||||
Public FullPath As String
|
||||
Public AccessRight As AccessRight
|
||||
End Class
|
||||
|
||||
Public Class VariableValue
|
||||
Public ReadOnly Property IsVector As Boolean = False
|
||||
|
||||
Public Property Value As Object
|
||||
Public Property Type As Type
|
||||
|
||||
Public Sub New(pValue As Object)
|
||||
' Check if value is a collection
|
||||
If TypeOf pValue Is IEnumerable Then
|
||||
IsVector = True
|
||||
End If
|
||||
|
||||
' Try to determine the type
|
||||
If IsNothing(pValue) Then
|
||||
Type = Nothing
|
||||
Else
|
||||
Type = pValue.GetType
|
||||
End If
|
||||
|
||||
Value = pValue
|
||||
End Sub
|
||||
End Class
|
||||
|
||||
''' <summary>
|
||||
''' Parse a IPAddress:Port String into its parts
|
||||
''' </summary>
|
||||
''' <param name="AddressWithOptionalPort"></param>
|
||||
''' <returns></returns>
|
||||
Public Shared Function ParseServiceAddress(AddressWithOptionalPort As String) As Tuple(Of String, Integer)
|
||||
Dim oSplit() As String = AddressWithOptionalPort.Split(":"c)
|
||||
Dim oAppServerAddress As String = oSplit(0)
|
||||
@ -131,10 +100,6 @@ Public Class Client
|
||||
End Try
|
||||
End Function
|
||||
|
||||
Private Function PreloadAttributes()
|
||||
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' TODO: Creates a new object
|
||||
''' </summary>
|
||||
@ -143,23 +108,7 @@ Public Class Client
|
||||
Throw New NotImplementedException()
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' Import options for NewFileAsync.
|
||||
''' </summary>
|
||||
Public Class NewFileOptions
|
||||
''' <summary>
|
||||
''' Option to keep the original extension when importing. Defaults to false.
|
||||
''' </summary>
|
||||
Public KeepExtension As Boolean = False
|
||||
''' <summary>
|
||||
''' Windows username of the user responsible for the import. Defaults to the currently logged in user.
|
||||
''' </summary>
|
||||
Public Username As String = Environment.UserName
|
||||
''' <summary>
|
||||
''' Date when the file was imported. Can be in the past. Defaults to now.
|
||||
''' </summary>
|
||||
Public DateImported As Date = Date.Now
|
||||
End Class
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' Imports a file from a filepath, creating a IDB ObjectId and Filesystem Object
|
||||
@ -236,30 +185,27 @@ Public Class Client
|
||||
End Try
|
||||
End Function
|
||||
|
||||
Public Class SetVariableValueOptions
|
||||
Public CheckDeleted As Boolean = False
|
||||
Public Username As String = String.Empty
|
||||
Public Language As String = String.Empty
|
||||
End Class
|
||||
|
||||
''' <summary>
|
||||
''' Sets a value to an attribute
|
||||
''' </summary>
|
||||
''' <param name="pObjectId">IDB ObjectId</param>
|
||||
''' <param name="pAttributeName">Name of the attribute</param>
|
||||
''' <param name="pAttributeType">The type of Attribute</param>
|
||||
''' <param name="pValue"></param>
|
||||
''' <param name="pOptions"></param>
|
||||
''' <returns></returns>
|
||||
Public Function SetVariableValue(pObjectId As Long, pAttributeName As String, pAttributeType As AttributeType, pValue As Object, Optional pOptions As SetVariableValueOptions = Nothing) As Boolean
|
||||
Public Function SetVariableValue(pObjectId As Long, pAttributeName As String, pValue As Object, Optional pOptions As SetVariableValueOptions = Nothing) As Boolean
|
||||
Try
|
||||
' Set default options
|
||||
If pOptions Is Nothing Then
|
||||
pOptions = New SetVariableValueOptions()
|
||||
End If
|
||||
|
||||
Dim oLanguage = NotNull(pOptions.Language, GetUserLanguage())
|
||||
Dim oUsername = NotNull(pOptions.Username, Environment.UserName)
|
||||
Dim oLanguage = GetUserLanguage(pOptions.UserLanguage)
|
||||
Dim oUsername = GetUserName(pOptions.UserName)
|
||||
Dim oOptions As New GetVariableValueOptions With {
|
||||
.UserLanguage = oLanguage,
|
||||
.UserName = oUsername
|
||||
}
|
||||
|
||||
Try
|
||||
Dim oResponse = _channel.TestObjectIdExists(New TestObjectIdExistsRequest With {.ObjectId = pObjectId})
|
||||
@ -272,96 +218,85 @@ Public Class Client
|
||||
Return False
|
||||
End Try
|
||||
|
||||
' TODO: Check if Attribute exists
|
||||
|
||||
Dim oType = pValue.GetType.Name
|
||||
|
||||
If oType = GetType(DataTable).Name Then
|
||||
Dim oValueTable As DataTable = pValue
|
||||
Dim oCurrentValue As VariableValue
|
||||
|
||||
If pOptions.CheckDeleted = True Then
|
||||
Dim oOptions As New GetVariableValueOptions With {
|
||||
.Language = oLanguage,
|
||||
.Username = oUsername
|
||||
}
|
||||
' Get current value
|
||||
oCurrentValue = GetVariableValue(pObjectId, pAttributeName, oOptions)
|
||||
|
||||
' Get current value
|
||||
oCurrentValue = GetVariableValue(pObjectId, pAttributeName, pAttributeType, oOptions)
|
||||
' If current value is datatable
|
||||
If oCurrentValue.Type = GetType(DataTable) Then
|
||||
|
||||
' If current value is datatable
|
||||
If oCurrentValue.Type = GetType(DataTable) Then
|
||||
' Convert value to Datatable
|
||||
Dim oTable As DataTable = oCurrentValue.Value
|
||||
|
||||
' Convert value to Datatable
|
||||
Dim oTable As DataTable = oCurrentValue.Value
|
||||
If oTable.Rows.Count > 1 Then
|
||||
|
||||
If oTable.Rows.Count > 1 Then
|
||||
|
||||
'now Checking whether the old row still remains in Vector? If not it will be deleted as it cannot be replaced in multivalues
|
||||
For Each oRow As DataRow In oTable.Rows
|
||||
Dim oExists As Boolean = False
|
||||
For Each oNewValueRow As DataRow In oValueTable.Rows
|
||||
Dim oInfo = $"Checking oldValue[{oRow.Item(0)}] vs NewValue [{oNewValueRow.Item(1)}]"
|
||||
If oNewValueRow.Item(1).ToString.ToUpper = oRow.Item(0).ToString.ToUpper Then
|
||||
oExists = True
|
||||
Exit For
|
||||
End If
|
||||
Next
|
||||
|
||||
If oExists = False Then
|
||||
_logger.Debug($"Value [{oRow.Item(0)}] no longer existing in Vector-Attribute [{pAttributeName}] - will be deleted!")
|
||||
DeleteTermObjectFromMetadata(pObjectId, pAttributeName, oRow.Item(0))
|
||||
End If
|
||||
|
||||
Next
|
||||
End If
|
||||
Else
|
||||
If oValueTable.Rows.Count > 1 Then
|
||||
'now Checking whether the old row still remains in Vector? If not it will be deleted as it cannot be replaced in multivalues
|
||||
For Each oRow As DataRow In oTable.Rows
|
||||
Dim oExists As Boolean = False
|
||||
For Each oNewValueRow As DataRow In oValueTable.Rows
|
||||
_logger.Debug($"Checking oldValue[{oCurrentValue}] vs NewValue [{oNewValueRow.Item(1)}]")
|
||||
|
||||
If oNewValueRow.Item(1).ToString.ToUpper = oCurrentValue.ToString.ToUpper Then
|
||||
If oNewValueRow.Item(1).ToString.ToUpper = oRow.Item(0).ToString.ToUpper Then
|
||||
oExists = True
|
||||
Exit For
|
||||
|
||||
End If
|
||||
|
||||
Next
|
||||
|
||||
If oExists = False Then
|
||||
_logger.Debug($"Value [{oCurrentValue}] no longer existing in Vector-Attribute [{pAttributeName}] - will be deleted!")
|
||||
DeleteTermObjectFromMetadata(pObjectId, pAttributeName, oCurrentValue.Value)
|
||||
_logger.Debug($"Value [{oRow.Item(0)}] no longer existing in Vector-Attribute [{pAttributeName}] - will be deleted!")
|
||||
DeleteTermObjectFromMetadata(pObjectId, pAttributeName, oRow.Item(0))
|
||||
End If
|
||||
|
||||
Else
|
||||
_logger.Debug($"Value [{oCurrentValue}] of Attribute [{pAttributeName}] obviously was updated during runtime - will be deleted!")
|
||||
DeleteTermObjectFromMetadata(pObjectId, pAttributeName, oCurrentValue.Value)
|
||||
Next
|
||||
End If
|
||||
Else
|
||||
If oValueTable.Rows.Count > 1 Then
|
||||
|
||||
'now Checking whether the old row still remains in Vector? If not it will be deleted as it cannot be replaced in multivalues
|
||||
Dim oExists As Boolean = False
|
||||
For Each oNewValueRow As DataRow In oValueTable.Rows
|
||||
_logger.Debug($"Checking oldValue[{oCurrentValue}] vs NewValue [{oNewValueRow.Item(1)}]")
|
||||
|
||||
If oNewValueRow.Item(1).ToString.ToUpper = oCurrentValue.ToString.ToUpper Then
|
||||
oExists = True
|
||||
Exit For
|
||||
End If
|
||||
|
||||
Next
|
||||
If oExists = False Then
|
||||
_logger.Debug($"Value [{oCurrentValue}] no longer existing in Vector-Attribute [{pAttributeName}] - will be deleted!")
|
||||
DeleteTermObjectFromMetadata(pObjectId, pAttributeName, oCurrentValue.Value)
|
||||
End If
|
||||
|
||||
Else
|
||||
_logger.Debug($"Value [{oCurrentValue}] of Attribute [{pAttributeName}] obviously was updated during runtime - will be deleted!")
|
||||
DeleteTermObjectFromMetadata(pObjectId, pAttributeName, oCurrentValue.Value)
|
||||
|
||||
End If
|
||||
|
||||
End If
|
||||
|
||||
For Each oNewValueRow As DataRow In oValueTable.Rows
|
||||
Dim oSuccess As Boolean = False
|
||||
Dim oSQL = $"DECLARE @NEW_OBJ_MD_ID BIGINT
|
||||
EXEC PRIDB_NEW_OBJ_DATA({pObjectId}, '{pAttributeName}', '{oUsername}', '{oNewValueRow.Item(1)}', '{oLanguage}', 0, @OMD_ID = @NEW_OBJ_MD_ID OUTPUT)"
|
||||
Dim oResult As Boolean = NewObjectData(pObjectId, pAttributeName, pValue, New NewObjectOptions With {
|
||||
.UserLanguage = oLanguage,
|
||||
.UserName = oUsername
|
||||
})
|
||||
|
||||
Dim oResult = _channel.ExecuteNonQuery_MSSQL_IDB(oSQL)
|
||||
|
||||
If Not oResult.OK Then
|
||||
If oResult = False Then
|
||||
Return False
|
||||
End If
|
||||
Next
|
||||
Return True
|
||||
Else
|
||||
Dim oSql = $"DECLARE @NEW_OBJ_MD_ID BIGINT
|
||||
EXEC PRIDB_NEW_OBJ_DATA({pObjectId}, '{pAttributeName}', '{oUsername}', '{pValue}', '{oLanguage}', 0, @OMD_ID = @NEW_OBJ_MD_ID OUTPUT)"
|
||||
|
||||
Dim oResult = _channel.ExecuteNonQuery_MSSQL_IDB(oSql)
|
||||
|
||||
Return oResult.OK
|
||||
Return NewObjectData(pObjectId, pAttributeName, pValue, New NewObjectOptions With {
|
||||
.UserLanguage = oLanguage,
|
||||
.UserName = oUsername
|
||||
})
|
||||
End If
|
||||
|
||||
Catch ex As Exception
|
||||
@ -370,112 +305,60 @@ Public Class Client
|
||||
End Try
|
||||
End Function
|
||||
|
||||
Public Class GetVariableValueOptions
|
||||
Public Username As String = String.Empty
|
||||
Public Language As String = String.Empty
|
||||
End Class
|
||||
|
||||
Public Function GetVariableValue(pObjectId As Long, pAttributeName As String, pAttributeType As AttributeType, Optional pOptions As GetVariableValueOptions = Nothing) As VariableValue
|
||||
''' <summary>
|
||||
'''
|
||||
''' </summary>
|
||||
''' <param name="pObjectId"></param>
|
||||
''' <param name="pAttributeName"></param>
|
||||
''' <param name="pOptions"></param>
|
||||
''' <returns></returns>
|
||||
Public Function GetVariableValue(pObjectId As Long, pAttributeName As String, Optional pOptions As GetVariableValueOptions = Nothing) As VariableValue
|
||||
If pOptions Is Nothing Then
|
||||
pOptions = New GetVariableValueOptions()
|
||||
End If
|
||||
|
||||
pOptions.Language = NotNull(pOptions.Language, GetUserLanguage())
|
||||
pOptions.Username = NotNull(pOptions.Username, Environment.UserName)
|
||||
pOptions.UserLanguage = GetUserLanguage(pOptions.UserLanguage)
|
||||
pOptions.UserName = GetUserName(pOptions.UserName)
|
||||
|
||||
' Check if ObjectId exists
|
||||
Try
|
||||
Dim oResponse = _channel.TestObjectIdExists(New TestObjectIdExistsRequest With {.ObjectId = pObjectId})
|
||||
If oResponse.Exists = False Then
|
||||
Return Nothing
|
||||
Return New VariableValue()
|
||||
|
||||
End If
|
||||
|
||||
Catch ex As Exception
|
||||
_logger.Error(ex)
|
||||
Return Nothing
|
||||
Return New VariableValue()
|
||||
|
||||
End Try
|
||||
|
||||
' Get Attributes and Values from Database
|
||||
Dim oAttributes As DataTable = GetAttributesForObject(pObjectId, pOptions.Language)
|
||||
|
||||
' TODO: Check if Attribute exists & REfactor
|
||||
Try
|
||||
Dim oVectorAttribute As Boolean = False
|
||||
Select Case pAttributeType
|
||||
Case AttributeType.VectorInteger
|
||||
oVectorAttribute = True
|
||||
Case AttributeType.VectorString
|
||||
oVectorAttribute = True
|
||||
Case Else
|
||||
oVectorAttribute = False
|
||||
End Select
|
||||
|
||||
Dim oValues As New List(Of Object)
|
||||
Dim oRows As List(Of DataRow) = oAttributes.AsEnumerable().
|
||||
Where(Function(pRow As DataRow) pRow.Item("AttributeTitle") = pAttributeName).
|
||||
' Get Attributes and Values from Database
|
||||
Dim oAttributes As List(Of ObjectAttribute) = GetAttributesForObject(pObjectId, pOptions.UserLanguage)
|
||||
Dim oValues = oAttributes.AsEnumerable().
|
||||
Where(Function(pAttr)
|
||||
Return pAttr.Title.ToUpper = pAttributeName.ToUpper
|
||||
End Function).
|
||||
Select(Function(pAttr) pAttr.Value).
|
||||
ToList()
|
||||
|
||||
'If Not IsNothing(oAttributes) Then
|
||||
' If oVectorAttribute = True And _dummy_table_attributes.Rows.Count = 1 And pOptions.FromIDB = False Then
|
||||
' Try
|
||||
' If pAttributeName = "IDBCreatedWhen" Then
|
||||
' pAttributeName = "ADDED_WHEN"
|
||||
' ElseIf pAttributeName = "IDBCreatedWho" Then
|
||||
' pAttributeName = "ADDED_WHO"
|
||||
' ElseIf pAttributeName = "IDBChangedWhen" Then
|
||||
' pAttributeName = "CHANGED_WHEN"
|
||||
' ElseIf pAttributeName = "IDBChangedWho" Then
|
||||
' pAttributeName = "CHANGED_WHO"
|
||||
' End If
|
||||
|
||||
' oAttributeValue = _dummy_table_attributes.Rows(0).Item(pAttributeName)
|
||||
' Catch ex As Exception
|
||||
' _logger.Debug($"Error getting Attribute from IDB_DT_DOC_DATA: {ex.Message}")
|
||||
' End Try
|
||||
|
||||
' End If
|
||||
'Else
|
||||
' Throw New ApplicationException($"Could not get Attributes for ObjectId [{pObjectId}]")
|
||||
'End If
|
||||
|
||||
'TODO: BRAUCHEN SIE DAS ÜBERHAUPT??????11111?!!1!1
|
||||
'If Not IsNothing(oAttributeValue) Then
|
||||
' Return oAttributeValue
|
||||
'Else
|
||||
' _logger.Debug($"oAttributeValue for Attribute [{pAttributeName}] is so far nothing..Now trying FNIDB_PM_GET_VARIABLE_VALUE ")
|
||||
'End If
|
||||
'Dim oFNSQL = $"SELECT * FROM [dbo].[FNIDB_PM_GET_VARIABLE_VALUE] ({pObjectId},'{pAttributeName}','{pOptions.Language}',CONVERT(BIT,'0'))"
|
||||
'Dim oDatatable As TableResult = _channel.ReturnDatatable_MSSQL_IDB(oFNSQL)
|
||||
|
||||
'If oDatatable.OK = False Then
|
||||
' Throw New ApplicationException(oDatatable.ErrorMessage)
|
||||
'End If
|
||||
|
||||
'If oDatatable.Table.Rows.Count = 1 Then
|
||||
' oAttributeValue = oDatatable.Table.Rows.Item(0).Item(0)
|
||||
'End If
|
||||
|
||||
If oVectorAttribute = False Then
|
||||
Dim oRow As DataRow = oRows.FirstOrDefault()
|
||||
Dim oType As String = oRow.Item("AttributeType")
|
||||
|
||||
Dim oValue = GetValueByType(oRow, oType)
|
||||
'oValues.Add(oValue)
|
||||
|
||||
Return New VariableValue(oValue)
|
||||
Else
|
||||
For Each oRow As DataRow In oRows
|
||||
Dim oType As String = oRow.Item("AttributeType")
|
||||
|
||||
Dim oValue = GetValueByType(oRow, oType)
|
||||
oValues.Add(oValue)
|
||||
Next
|
||||
|
||||
' Either return a list or a single value or nothing, always wrapped in VariableValue
|
||||
If oValues.Count > 1 Then
|
||||
Return New VariableValue(oValues)
|
||||
|
||||
ElseIf oValues.Count = 1 Then
|
||||
Return New VariableValue(oValues.First())
|
||||
|
||||
Else
|
||||
Return New VariableValue()
|
||||
|
||||
End If
|
||||
|
||||
Catch ex As Exception
|
||||
_logger.Error(ex)
|
||||
Return Nothing
|
||||
Return New VariableValue()
|
||||
|
||||
End Try
|
||||
End Function
|
||||
@ -525,11 +408,62 @@ Public Class Client
|
||||
End Try
|
||||
End Function
|
||||
|
||||
Private Function GetAttributesForObject(pObjectId As Long, pLanguage As String) As DataTable
|
||||
Dim oTable As DataTable
|
||||
Private Class ObjectAttribute
|
||||
Public Property Id As Long
|
||||
Public Property Title As String
|
||||
Public Property Type As String
|
||||
|
||||
Public Property ValueBigInt As Long
|
||||
Public Property ValueText As String
|
||||
Public Property ValueDecimal As Decimal
|
||||
Public Property ValueDate As DateTime
|
||||
|
||||
Public ReadOnly Property Value As Object
|
||||
Get
|
||||
Return GetValue()
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Private Function GetValue() As Object
|
||||
Select Case Type
|
||||
Case AttributeTypeName.VECTOR_INTEGER
|
||||
Return ValueBigInt
|
||||
|
||||
Case AttributeTypeName.BIG_INTEGER
|
||||
Return ValueBigInt
|
||||
|
||||
Case AttributeTypeName.VECTOR_STRING
|
||||
Return ValueText
|
||||
|
||||
Case AttributeTypeName.VARCHAR
|
||||
Return ValueText
|
||||
|
||||
Case AttributeTypeName.BIT
|
||||
Return IIf(ValueBigInt = 1, True, False)
|
||||
|
||||
Case AttributeTypeName.DATE
|
||||
Return ValueDate
|
||||
|
||||
Case AttributeTypeName.DATETIME
|
||||
Return ValueDate
|
||||
|
||||
Case AttributeTypeName.DECIMAL
|
||||
Return ValueDecimal
|
||||
|
||||
Case AttributeTypeName.FLOAT
|
||||
Return ValueDecimal
|
||||
|
||||
Case Else
|
||||
Return Nothing
|
||||
End Select
|
||||
End Function
|
||||
End Class
|
||||
|
||||
Private Function GetAttributesForObject(pObjectId As Long, pLanguage As String) As List(Of ObjectAttribute)
|
||||
Dim oAttributes As New List(Of ObjectAttribute)
|
||||
|
||||
Try
|
||||
Dim oResult As TableResult = _channel.ReturnDatatable_MSSQL_IDB($"EXEC [PRIDB_GET_VALUE_DT]({pObjectId}, '{pLanguage}')")
|
||||
Dim oResult As TableResult = _channel.ReturnDatatable_MSSQL_IDB($"EXEC [PRIDB_GET_VALUE_DT] {pObjectId}, '{pLanguage}'")
|
||||
|
||||
If oResult.OK = False Then
|
||||
Throw New ApplicationException(oResult.ErrorMessage)
|
||||
@ -539,24 +473,61 @@ Public Class Client
|
||||
Return Nothing
|
||||
End If
|
||||
|
||||
oTable = oResult.Table
|
||||
For Each oRow As DataRow In oResult.Table.Rows
|
||||
Dim oAttribute As New ObjectAttribute With {
|
||||
.Id = oRow.Item("AttributeId"),
|
||||
.Title = oRow.Item("AttributeTitle"),
|
||||
.Type = oRow.Item("AttributeType"),
|
||||
.ValueBigInt = NotNull(oRow.Item("ValueBigInt"), Nothing),
|
||||
.ValueDate = NotNull(oRow.Item("ValueDate"), Nothing),
|
||||
.ValueDecimal = NotNull(oRow.Item("ValueDecimal"), Nothing),
|
||||
.ValueText = NotNull(oRow.Item("ValueText"), Nothing)
|
||||
}
|
||||
|
||||
Return oTable
|
||||
oAttributes.Add(oAttribute)
|
||||
Next
|
||||
|
||||
Return oAttributes
|
||||
Catch ex As Exception
|
||||
_logger.Error(ex)
|
||||
Return Nothing
|
||||
End Try
|
||||
End Function
|
||||
|
||||
Private Function NewObjectData(pObjectId As Long, pAttributeName As String, pValue As Object, pOptions As NewObjectOptions)
|
||||
If pOptions Is Nothing Then
|
||||
pOptions = New NewObjectOptions()
|
||||
End If
|
||||
|
||||
Dim oLanguage = GetUserLanguage(pOptions.UserLanguage)
|
||||
Dim oUsername = GetUserName(pOptions.UserName)
|
||||
|
||||
Dim oSql = $"DECLARE @NEW_OBJ_MD_ID BIGINT
|
||||
EXEC PRIDB_NEW_OBJ_DATA({pObjectId}, '{pAttributeName}', '{oUsername}', '{pValue}', '{oLanguage}', 0, @OMD_ID = @NEW_OBJ_MD_ID OUTPUT)"
|
||||
Dim oResult = _channel.ExecuteNonQuery_MSSQL_IDB(oSql)
|
||||
|
||||
If oResult.OK = False Then
|
||||
_logger.Warn("Error while deleting Term object")
|
||||
_logger.Error(oResult.ErrorMessage)
|
||||
End If
|
||||
|
||||
Return oResult.OK
|
||||
End Function
|
||||
|
||||
Private Function DeleteTermObjectFromMetadata(pObjectId As Long, pAttributeName As String, pTerm2Delete As String, Optional pUsername As String = "", Optional pLanguage As String = "") As Boolean
|
||||
Try
|
||||
Dim oLanguage = NotNull(pLanguage, GetUserLanguage())
|
||||
Dim oUsername = NotNull(pUsername, Environment.UserName)
|
||||
Dim oLanguage = GetUserLanguage(pLanguage)
|
||||
Dim oUsername = GetUserName(pUsername)
|
||||
|
||||
Dim oIdIsForeign As Integer = 1
|
||||
Dim oDELSQL = $"EXEC PRIDB_DELETE_TERM_OBJECT_METADATA {pObjectId},'{pAttributeName}','{pTerm2Delete}','{oUsername}','{oLanguage}',{oIdIsForeign}"
|
||||
Dim oResult = _channel.ExecuteNonQuery_MSSQL_IDB(oDELSQL)
|
||||
|
||||
If oResult.OK = False Then
|
||||
_logger.Warn("Error while deleting Term object")
|
||||
_logger.Error(oResult.ErrorMessage)
|
||||
End If
|
||||
|
||||
Return oResult.OK
|
||||
Catch ex As Exception
|
||||
_logger.Error(ex)
|
||||
@ -574,7 +545,6 @@ Public Class Client
|
||||
End Try
|
||||
End Function
|
||||
|
||||
|
||||
Public Async Function GetDatatableFromIDBAsync(SQL As String) As Task(Of TableResult)
|
||||
Try
|
||||
Dim oResponse = Await _channel.ReturnDatatable_MSSQL_IDBAsync(SQL)
|
||||
@ -699,8 +669,93 @@ Public Class Client
|
||||
End Try
|
||||
End Function
|
||||
|
||||
Private Function GetUserLanguage() As String
|
||||
Return Threading.Thread.CurrentThread.CurrentUICulture.Name
|
||||
Private Function GetUserLanguage(pOverrideLanguage As String) As String
|
||||
Return NotNull(pOverrideLanguage, Threading.Thread.CurrentThread.CurrentUICulture.Name)
|
||||
End Function
|
||||
|
||||
Private Function GetUserName(pOverrideName) As String
|
||||
Return NotNull(pOverrideName, Environment.UserName)
|
||||
End Function
|
||||
|
||||
|
||||
#Region "Option & Parameter Classes"
|
||||
''' <summary>
|
||||
''' Import options for NewFileAsync.
|
||||
''' </summary>
|
||||
Public Class NewFileOptions
|
||||
''' <summary>
|
||||
''' Option to keep the original extension when importing. Defaults to false.
|
||||
''' </summary>
|
||||
Public KeepExtension As Boolean = False
|
||||
''' <summary>
|
||||
''' Windows username of the user responsible for the import. Defaults to the currently logged in user.
|
||||
''' </summary>
|
||||
Public Username As String = Environment.UserName
|
||||
''' <summary>
|
||||
''' Date when the file was imported. Can be in the past. Defaults to now.
|
||||
''' </summary>
|
||||
Public DateImported As Date = Date.Now
|
||||
End Class
|
||||
|
||||
Public Class NewObjectOptions
|
||||
Public UserName As String
|
||||
Public UserLanguage As String
|
||||
End Class
|
||||
|
||||
Public Class VariableValueOptions
|
||||
Public UserName As String
|
||||
Public UserLanguage As String
|
||||
End Class
|
||||
|
||||
Public Class GetVariableValueOptions
|
||||
Inherits VariableValueOptions
|
||||
End Class
|
||||
|
||||
Public Class SetVariableValueOptions
|
||||
Inherits VariableValueOptions
|
||||
End Class
|
||||
#End Region
|
||||
|
||||
#Region "Response Classes"
|
||||
Public Class StreamedFile
|
||||
Public Stream As MemoryStream
|
||||
Public FileName As String
|
||||
End Class
|
||||
|
||||
Public Class FileList
|
||||
Public Datatable As DataTable
|
||||
End Class
|
||||
|
||||
Public Class DocumentInfo
|
||||
Public FullPath As String
|
||||
Public AccessRight As AccessRight
|
||||
End Class
|
||||
|
||||
Public Class VariableValue
|
||||
Public ReadOnly Property IsVector As Boolean = False
|
||||
|
||||
Public Property Value As Object
|
||||
Public Property Type As Type
|
||||
|
||||
Public Sub New()
|
||||
MyClass.New(Nothing)
|
||||
End Sub
|
||||
|
||||
Public Sub New(pValue As Object)
|
||||
' Check if value is a collection
|
||||
If TypeOf pValue Is IEnumerable Then
|
||||
IsVector = True
|
||||
End If
|
||||
|
||||
' Try to determine the type
|
||||
If IsNothing(pValue) Then
|
||||
Type = Nothing
|
||||
Else
|
||||
Type = pValue.GetType
|
||||
End If
|
||||
|
||||
Value = pValue
|
||||
End Sub
|
||||
End Class
|
||||
#End Region
|
||||
End Class
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user