251 lines
11 KiB
VB.net
251 lines
11 KiB
VB.net
Public Class ClassIDBData
|
|
Public DTVWIDB_BE_ATTRIBUTE As DataTable
|
|
''' <summary>
|
|
''' Gets all indices by BusinessEntity.
|
|
''' </summary>
|
|
''' <param name="BusinessEntity">Title of Business Entity</param>
|
|
''' <returns>Array with all Indices</returns>
|
|
''' <remarks></remarks>
|
|
'''
|
|
Public Function Init()
|
|
Dim oSQL = $"SELECT DISTINCT ATTR_TITLE, TYP_ID, TYP_ID as [TYPE_ID] FROM VWIDB_BE_ATTRIBUTE WHERE SYS_ATTRIBUTE = 0 ORDER BY ATTR_TITLE"
|
|
DTVWIDB_BE_ATTRIBUTE = DatabaseFallback.GetDatatableIDB(oSQL)
|
|
If IsNothing(DTVWIDB_BE_ATTRIBUTE) Then
|
|
oSQL = $"SELECT DISTINCT ATTR_TITLE, TYP_ID, TYP_ID as [TYPE_ID] FROM VWIDB_BE_ATTRIBUTE ORDER BY ATTR_TITLE "
|
|
DTVWIDB_BE_ATTRIBUTE = DatabaseFallback.GetDatatableIDB(oSQL)
|
|
End If
|
|
End Function
|
|
Public IDBSystemIndices As List(Of String)
|
|
Public Function GetIndicesByBE(ByVal BusinessEntity As String) As String()
|
|
Try
|
|
Dim aNames(4) As String
|
|
aNames(0) = "ObjectID"
|
|
aNames(1) = "IDBCreatedWhen"
|
|
aNames(2) = "IDBCreatedWho"
|
|
aNames(3) = "IDBChangedWhen"
|
|
aNames(4) = "IDBChangedWho"
|
|
IDBSystemIndices = aNames.ToList
|
|
' Array für Indizes vorbereiten
|
|
Dim aIndexNames(DTVWIDB_BE_ATTRIBUTE.Rows.Count + 4) As String
|
|
Dim oCount As Integer = 0
|
|
aIndexNames(oCount) = "ObjectID"
|
|
oCount += 1
|
|
aIndexNames(oCount) = "IDBCreatedWhen"
|
|
oCount += 1
|
|
aIndexNames(oCount) = "IDBCreatedWho"
|
|
oCount += 1
|
|
aIndexNames(oCount) = "IDBChangedWhen"
|
|
oCount += 1
|
|
aIndexNames(oCount) = "IDBChangedWho"
|
|
For Each oRow As DataRow In DTVWIDB_BE_ATTRIBUTE.Rows
|
|
oCount += 1
|
|
aIndexNames(oCount) = oRow.Item("ATTR_TITLE")
|
|
|
|
Next
|
|
|
|
|
|
' Indexarray sortiert zurückgeben
|
|
Array.Sort(aIndexNames)
|
|
' Indexarray zurückgeben
|
|
Return aIndexNames
|
|
|
|
Catch ex As Exception
|
|
LOGGER.Error(ex)
|
|
MsgBox(ex.Message, MsgBoxStyle.Critical, "Error getting the IDB Indicies")
|
|
Return Nothing
|
|
End Try
|
|
End Function
|
|
Public Function GetTypeOfIndex(ByVal indexname As String) As Integer
|
|
Try
|
|
For Each oRow As DataRow In DTVWIDB_BE_ATTRIBUTE.Rows
|
|
If oRow.Item("ATTR_TITLE") = indexname Then
|
|
Try
|
|
Dim oType = oRow.Item("TYP_ID")
|
|
Return oType
|
|
Catch ex As Exception
|
|
Try
|
|
Dim oType = oRow.Item("TYP_ID")
|
|
Return oType
|
|
Catch ex1 As Exception
|
|
LOGGER.Error(ex)
|
|
Return Nothing
|
|
End Try
|
|
|
|
End Try
|
|
|
|
End If
|
|
Next
|
|
|
|
Catch ex As Exception
|
|
LOGGER.Error(ex)
|
|
Return Nothing
|
|
End Try
|
|
|
|
End Function
|
|
Public Function GetVariableValue(oAttributeName As String, Optional oIDBTyp As Integer = 0, Optional FromIDB As Boolean = False) As Object
|
|
Try
|
|
Dim oSingleAttribute As Boolean = True
|
|
Select Case oIDBTyp
|
|
Case 8
|
|
oSingleAttribute = False
|
|
Case 9
|
|
oSingleAttribute = False
|
|
End Select
|
|
Dim oAttributeValue
|
|
|
|
If oSingleAttribute = True And IDB_DT_DOC_DATA.Rows.Count = 1 And FromIDB = False Then
|
|
Try
|
|
If oAttributeName = "IDBCreatedWhen" Then
|
|
oAttributeName = "ADDED_WHEN"
|
|
ElseIf oAttributeName = "IDBCreatedWho" Then
|
|
oAttributeName = "ADDED_WHO"
|
|
ElseIf oAttributeName = "IDBChangedWhen" Then
|
|
oAttributeName = "CHANGED_WHEN"
|
|
ElseIf oAttributeName = "IDBChangedWho" Then
|
|
oAttributeName = "CHANGED_WHO"
|
|
End If
|
|
|
|
oAttributeValue = IDB_DT_DOC_DATA.Rows(0).Item(oAttributeName)
|
|
Catch ex As Exception
|
|
LOGGER.Debug($"Error getting Attribute from IDB_DT_DOC_DATA: {ex.Message}")
|
|
End Try
|
|
|
|
End If
|
|
If Not IsNothing(oAttributeValue) Then
|
|
Return oAttributeValue
|
|
Else
|
|
LOGGER.Debug($"oAttributeValue for Attribute [{oAttributeName}] is so far nothing..Now trying FNIDB_PM_GET_VARIABLE_VALUE ")
|
|
End If
|
|
Dim oFNSQL = $"SELECT * FROM [dbo].[FNIDB_PM_GET_VARIABLE_VALUE] ({CURRENT_DOC_ID},'{oAttributeName}','{USER_LANGUAGE}',CONVERT(BIT,'{IDB_USES_WMFILESTORE}'))"
|
|
oAttributeValue = DatabaseFallback.GetDatatableIDB(oFNSQL)
|
|
Dim odt As DataTable = oAttributeValue
|
|
If odt.Rows.Count = 1 Then
|
|
oAttributeValue = odt.Rows(0).Item(0)
|
|
End If
|
|
Return oAttributeValue
|
|
Catch ex As Exception
|
|
LOGGER.Error(ex)
|
|
Return Nothing
|
|
End Try
|
|
|
|
End Function
|
|
Public Function Delete_Term_Object_From_Metadata(oAttributeName As String, oTerm2Delete As String) As Object
|
|
Try
|
|
Dim oAttributeValue
|
|
Dim oID_IS_FOREIGN As Integer
|
|
oID_IS_FOREIGN = 0
|
|
If IDB_USES_WMFILESTORE Then
|
|
oID_IS_FOREIGN = 1
|
|
End If
|
|
Dim oDELSQL = $"EXEC PRIDB_DELETE_TERM_OBJECT_METADATA {CURRENT_DOC_ID},'{oAttributeName}','{oTerm2Delete}','{USER_USERNAME}','{USER_LANGUAGE}',{oID_IS_FOREIGN}"
|
|
DatabaseFallback.ExecuteNonQueryIDB(oDELSQL)
|
|
|
|
Catch ex As Exception
|
|
LOGGER.Error(ex)
|
|
Return Nothing
|
|
End Try
|
|
|
|
End Function
|
|
Public Function Delete_AttributeData(pIDB_OBJID As Int64, pAttributeName As String) As Object
|
|
Try
|
|
Dim oDELSQL = $"EXEC PRIDB_DELETE_ATTRIBUTE_DATA {pIDB_OBJID},'{pAttributeName}','{USER_USERNAME}'"
|
|
DatabaseFallback.ExecuteNonQueryIDB(oDELSQL)
|
|
|
|
Catch ex As Exception
|
|
LOGGER.Error(ex)
|
|
Return Nothing
|
|
End Try
|
|
|
|
End Function
|
|
|
|
Public Function SetVariableValue(oAttributeName As String, oNewValue As Object, Optional CheckDeleted As Boolean = False, Optional oIDBTyp As Integer = 0)
|
|
Try
|
|
Dim omytype = oNewValue.GetType.ToString
|
|
If omytype = "System.Data.DataTable" Then
|
|
Dim oDTMyNewValues As DataTable = oNewValue
|
|
Dim oOldAttributeResult
|
|
Dim oTypeOldResult
|
|
|
|
If CheckDeleted = True Then
|
|
oOldAttributeResult = GetVariableValue(oAttributeName, oIDBTyp)
|
|
oTypeOldResult = oOldAttributeResult.GetType.ToString
|
|
If oTypeOldResult = "System.Data.DataTable" Then
|
|
Dim myOldValues As DataTable = oOldAttributeResult
|
|
If myOldValues.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 oOldValueRow As DataRow In myOldValues.Rows
|
|
Dim oExists As Boolean = False
|
|
For Each oNewValueRow As DataRow In oDTMyNewValues.Rows
|
|
Dim oInfo1 = $"Checking oldValue[{oOldValueRow.Item(0)}] vs NewValue [{oNewValueRow.Item(1)}]"
|
|
If oNewValueRow.Item(1).ToString.ToUpper = oOldValueRow.Item(0).ToString.ToUpper Then
|
|
oExists = True
|
|
Exit For
|
|
End If
|
|
Next
|
|
|
|
If oExists = False Then
|
|
Dim oInfo = $"Value [{oOldValueRow.Item(0)}] no longer existing in Vector-Attribute [{oAttributeName}] - will be deleted!"
|
|
LOGGER.Debug(oInfo)
|
|
'SetVariableValue(CURRENT_PROFILE_LOG_INDEX, oInfo)
|
|
Delete_Term_Object_From_Metadata(oAttributeName, oOldValueRow.Item(0))
|
|
End If
|
|
|
|
Next
|
|
End If
|
|
Else
|
|
'### Old Value is a single value ###
|
|
If oDTMyNewValues.Rows.Count > 1 Then
|
|
'### there is more than one new value ###
|
|
Dim oExists As Boolean
|
|
For Each oNewValueRow As DataRow In oDTMyNewValues.Rows
|
|
oExists = False
|
|
Dim oInfo1 = $"Checking oldValue[{oOldAttributeResult}] vs NewValue [{oNewValueRow.Item(1)}]"
|
|
If oNewValueRow.Item(1).ToString.ToUpper = oOldAttributeResult.ToString.ToUpper Then
|
|
oExists = True
|
|
End If
|
|
Next
|
|
If oExists = False Then
|
|
Dim oInfo2 = $"Value [{oOldAttributeResult}] no longer existing in Vector-Attribute [{oAttributeName}] - will be deleted!"
|
|
LOGGER.Debug(oInfo2)
|
|
'SetVariableValue(CURRENT_PROFILE_LOG_INDEX, oInfo2)
|
|
Delete_Term_Object_From_Metadata(oAttributeName, oOldAttributeResult)
|
|
End If
|
|
Else
|
|
'### there is only ONE new value ###
|
|
If oDTMyNewValues.Rows(0).Item(1) <> oOldAttributeResult Then
|
|
Dim oInfo = $"Value [{oOldAttributeResult}] of Attribute [{oAttributeName}] obviously was updated during runtime - will be deleted!"
|
|
LOGGER.Debug(oInfo)
|
|
SetVariableValue(CURRENT_PROFILE_LOG_INDEX, oInfo)
|
|
Delete_Term_Object_From_Metadata(oAttributeName, oOldAttributeResult)
|
|
Else
|
|
LOGGER.Debug($"Attributvalue of [{oAttributeName}] did not change!")
|
|
End If
|
|
|
|
End If
|
|
|
|
End If
|
|
|
|
End If
|
|
|
|
For Each oNewValueRow As DataRow In oDTMyNewValues.Rows
|
|
Dim oSuccess As Boolean = False
|
|
Dim oFNSQL = $"DECLARE @NEW_OBJ_MD_ID BIGINT " & vbNewLine & $"EXEC PRIDB_NEW_OBJ_DATA {CURRENT_DOC_ID},'{oAttributeName}','{USER_USERNAME}','{oNewValueRow.Item(1).ToString}','{USER_LANGUAGE}',0,@OMD_ID = @NEW_OBJ_MD_ID OUTPUT"
|
|
oSuccess = DatabaseFallback.ExecuteNonQueryIDB(oFNSQL)
|
|
If oSuccess = False Then
|
|
Return False
|
|
End If
|
|
Next
|
|
Return True
|
|
Else
|
|
Dim oFNSQL = $"DECLARE @NEW_OBJ_MD_ID BIGINT " & vbNewLine & $"EXEC PRIDB_NEW_OBJ_DATA {CURRENT_DOC_ID},'{oAttributeName}','{USER_USERNAME}','{oNewValue}','{USER_LANGUAGE}',0,@OMD_ID = @NEW_OBJ_MD_ID OUTPUT"
|
|
Return DatabaseFallback.ExecuteNonQueryIDB(oFNSQL)
|
|
End If
|
|
|
|
Catch ex As Exception
|
|
LOGGER.Error(ex)
|
|
Return False
|
|
End Try
|
|
End Function
|
|
End Class
|