303 lines
11 KiB
VB.net
303 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
|
|
pValue = pValue.Replace(".", ",")
|
|
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
|