Modules/Windream/Helpers.vb
2025-04-29 16:20:42 +02:00

302 lines
11 KiB
VB.net

Imports System.Text.RegularExpressions
Imports DigitalData.Modules.Windream.Constants
Public Class Helpers
Private Shared ReadOnly VectorIndicies As New List(Of Integer) From {
INDEX_TYPE_VECTOR_BOOLEAN,
INDEX_TYPE_VECTOR_CURRENCY,
INDEX_TYPE_VECTOR_DATE,
INDEX_TYPE_VECTOR_DATE_TIME,
INDEX_TYPE_VECTOR_FIXED_POINT,
INDEX_TYPE_VECTOR_FLOAT,
INDEX_TYPE_VECTOR_INTEGER,
INDEX_TYPE_VECTOR_INTEGER_64BIT,
INDEX_TYPE_VECTOR_STRING,
INDEX_TYPE_VECTOR_TIME
}
Friend Shared Function ConvertVectorType(pIndexType As Integer, pValue As String)
Dim myArray()
ReDim myArray(0)
Select Case pIndexType
Case INDEX_TYPE_HASH ' 36865
If pValue = DELETE_ATTRIBUTE_VALUE Then
Return String.Empty
Else
'Umwandeln in String
myArray(0) = CStr(pValue)
End If
Case INDEX_TYPE_VECTOR_STRING '4097
If pValue = DELETE_ATTRIBUTE_VALUE Then
Return String.Empty
Else
'Umwandeln in String
myArray(0) = CStr(pValue)
End If
Case INDEX_TYPE_VECTOR_INTEGER '4098
If pValue = DELETE_ATTRIBUTE_VALUE Then
Return Nothing
Else
'Umwandeln in Integer
myArray(0) = CInt(pValue.Replace(" ", ""))
End If
Case INDEX_TYPE_VECTOR_FLOAT '4099
pValue = pValue.
Replace(" ", "").
Replace(".", ",")
If pValue = DELETE_ATTRIBUTE_VALUE Then
Return Nothing
Else
'Umwandeln in Double
myArray(0) = CDbl(pValue)
End If
Case INDEX_TYPE_VECTOR_BOOLEAN '4100
If pValue = DELETE_ATTRIBUTE_VALUE Then
Return Nothing
Else
'Umwandeln in Boolean
myArray(0) = CBool(pValue)
End If
Case INDEX_TYPE_VECTOR_DATE '4101
If pValue = DELETE_ATTRIBUTE_VALUE Then
Return Nothing
Else
'Umwandeln in Date
myArray(0) = CDate(pValue)
End If
Case INDEX_TYPE_VECTOR_INTEGER_64BIT '4107
If pValue = DELETE_ATTRIBUTE_VALUE Then
Return Nothing
Else
'Umwandeln in Date
myArray(0) = Convert.ToInt64(pValue)
End If
Case INDEX_TYPE_VECTOR_DATE_TIME '4103
Return Convert.ToDateTime(pValue)
If pValue = DELETE_ATTRIBUTE_VALUE Then
Return Nothing
Else
'Umwandeln in Date
myArray(0) = Convert.ToDateTime(pValue)
End If
Case 8204
pValue = pValue.Replace(" ", "")
If pValue = DELETE_ATTRIBUTE_VALUE Then
Return Nothing
Else
'Umwandeln in Integer
myArray(0) = CInt(pValue.Replace(" ", ""))
End If
Case Else
'Umwandeln in String
myArray(0) = CStr(pValue)
End Select
Return myArray
End Function
Friend Shared Function ConvertIndexValue(Type As Integer, pValue As String) As Object
pValue = pValue.Trim()
If Type > 4095 Then
Return ConvertVectorType(Type, pValue)
End If
Select Case Type
Case INDEX_TYPE_HASH
Return pValue
Case INDEX_TYPE_STRING
' Leerzeichen an Anfang und Ende entfernen
If pValue = DELETE_ATTRIBUTE_VALUE Then
Return String.Empty
Else
Return pValue
End If
Case INDEX_TYPE_VECTOR_STRING
If pValue = DELETE_ATTRIBUTE_VALUE Then
Return String.Empty
Else
Return pValue
End If
Case INDEX_TYPE_INTEGER
pValue = pValue.Replace(" ", String.Empty)
If pValue = DELETE_ATTRIBUTE_VALUE Then
Return Nothing
Else
Return Convert.ToInt32(pValue)
End If
Case INDEX_TYPE_VECTOR_INTEGER
pValue = pValue.Replace(" ", String.Empty)
If pValue = DELETE_ATTRIBUTE_VALUE Then
Return Nothing
Else
Return Convert.ToInt32(pValue)
End If
Case INDEX_TYPE_VECTOR_INTEGER_64BIT
pValue = pValue.Replace(" ", String.Empty)
If pValue = DELETE_ATTRIBUTE_VALUE Then
Return Nothing
Else
Return Convert.ToInt64(pValue)
End If
Case INDEX_TYPE_VECTOR_BOOLEAN
Return Convert.ToBoolean(pValue)
Case INDEX_TYPE_BOOLEAN
If pValue = DELETE_ATTRIBUTE_VALUE Then
Return Nothing
Else
Return Convert.ToBoolean(pValue)
End If
Case INDEX_TYPE_DATE
If pValue = DELETE_ATTRIBUTE_VALUE Then
Return Nothing
Else
Return Convert.ToDateTime(pValue)
End If
Case INDEX_TYPE_DATE_TIME
If pValue = DELETE_ATTRIBUTE_VALUE Then
Return Nothing
Else
Return Convert.ToDateTime(pValue)
End If
Case INDEX_TYPE_TIME
If pValue = DELETE_ATTRIBUTE_VALUE Then
Return Nothing
Else
Return Convert.ToDateTime(pValue)
End If
Case INDEX_TYPE_VECTOR_DATE_TIME
If pValue = DELETE_ATTRIBUTE_VALUE Then
Return Nothing
Else
Return Convert.ToDateTime(pValue)
End If
Case INDEX_TYPE_VECTOR_DATE
If pValue = DELETE_ATTRIBUTE_VALUE Then
Return Nothing
Else
Return Convert.ToDateTime(pValue)
End If
Case INDEX_TYPE_FLOAT
If pValue = DELETE_ATTRIBUTE_VALUE Then
Return Nothing
Else
Return Convert.ToDouble(pValue)
End If
Case INDEX_TYPE_VECTOR_FLOAT
If pValue = DELETE_ATTRIBUTE_VALUE Then
Return Nothing
Else
Return Convert.ToDouble(pValue)
End If
Case INDEX_TYPE_CURRENCY
If pValue = DELETE_ATTRIBUTE_VALUE Then
Return Nothing
Else
'Wegen currency muß ein eigenes Objekt vom typ Variant erzeugt werden
Dim aValueWrapper As System.Runtime.InteropServices.CurrencyWrapper = New System.Runtime.InteropServices.CurrencyWrapper(CDec(pValue))
Return aValueWrapper
End If
Case Else
Return pValue
End Select
End Function
Friend Shared Function ConvertAttrValue(Type As Integer, pValue As String) As Object
' Leerzeichen an Anfang und Ende entfernen
pValue = pValue.Trim()
If Type > 4095 Then
Return ConvertVectorType1(Type, pValue)
End If
Select Case Type
Case INDEX_TYPE_HASH
Return pValue
Case INDEX_TYPE_STRING
Return pValue
Case INDEX_TYPE_VECTOR_STRING
Return pValue
Case INDEX_TYPE_INTEGER
pValue = pValue.Replace(" ", String.Empty)
Return Convert.ToInt32(pValue)
Case INDEX_TYPE_VECTOR_INTEGER
pValue = pValue.Replace(" ", String.Empty)
Return Convert.ToInt32(pValue)
Case INDEX_TYPE_VECTOR_INTEGER_64BIT
pValue = pValue.Replace(" ", String.Empty)
Return Convert.ToInt64(pValue)
Case INDEX_TYPE_VECTOR_BOOLEAN
Return Convert.ToBoolean(pValue)
Case INDEX_TYPE_BOOLEAN
Return Convert.ToBoolean(pValue)
Case INDEX_TYPE_DATE
Return Convert.ToDateTime(pValue)
Case INDEX_TYPE_DATE_TIME
Return Convert.ToDateTime(pValue)
Case INDEX_TYPE_TIME
Return Convert.ToDateTime(pValue)
Case INDEX_TYPE_VECTOR_DATE_TIME
Return Convert.ToDateTime(pValue)
Case INDEX_TYPE_VECTOR_DATE
Return Convert.ToDateTime(pValue)
Case INDEX_TYPE_FLOAT
Return Convert.ToDouble(pValue)
Case INDEX_TYPE_VECTOR_FLOAT
Return Convert.ToDouble(pValue)
Case INDEX_TYPE_CURRENCY
'Wegen currency muß ein eigenes Objekt vom typ Variant erzeugt werden
Dim aValueWrapper As System.Runtime.InteropServices.CurrencyWrapper = New System.Runtime.InteropServices.CurrencyWrapper(CDec(pValue))
Return aValueWrapper
Case Else
Return pValue
End Select
End Function
Friend Shared Function ConvertVectorType1(pIndexType As Integer, pValue As String)
Select Case pIndexType
Case INDEX_TYPE_HASH ' 36865
'Umwandeln in String
Return CStr(pValue)
Case INDEX_TYPE_VECTOR_STRING '4097
'Umwandeln in String
Return CStr(pValue)
Case INDEX_TYPE_VECTOR_INTEGER '4098
'Umwandeln in Integer
Return CInt(pValue.Replace(" ", ""))
Case INDEX_TYPE_VECTOR_FLOAT '4099
pValue = pValue.
Replace(" ", "").
Replace(".", ",")
'Umwandeln in Double
Return CDbl(pValue)
Case INDEX_TYPE_VECTOR_BOOLEAN '4100
'Umwandeln in Boolean
Return CBool(pValue)
Case INDEX_TYPE_VECTOR_DATE '4101
'Umwandeln in Date
Return CDate(pValue)
Case INDEX_TYPE_VECTOR_INTEGER_64BIT '4107
Return Convert.ToInt64(pValue)
Case INDEX_TYPE_VECTOR_DATE_TIME '4103
'Umwandeln in Datum Uhrzeit
Return pValue
Case 8204
'Umwandeln in Integer
Return CInt(pValue.Replace(" ", ""))
Case Else
'Umwandeln in String
Return CStr(pValue)
End Select
End Function
Friend Shared Function IsVectorIndex(indexType As Integer)
Return VectorIndicies.Contains(indexType)
End Function
End Class