-
Notifications
You must be signed in to change notification settings - Fork 0
/
CriteriaHelper.vb
105 lines (99 loc) · 4.74 KB
/
CriteriaHelper.vb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
Imports DevExpress.Data.Filtering
Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports System.Web
Namespace WebApplication1.Code
Public NotInheritable Class CriteriaHelper
Private Sub New()
End Sub
Public Shared Function ExtractDisplayText(ByVal criteria As CriteriaOperator) As String
Dim visitor = New CustomVisitor()
visitor.AcceptOperator(criteria)
Return String.Join(";", visitor.Values)
End Function
Public Shared Function GetCriteriaByText(ByVal text As String, ByVal columnName As String, ByVal groupOperatorType As GroupOperatorType) As CriteriaOperator
Dim ids = text.Split(";"c)
Dim operandProp = New OperandProperty(columnName)
Dim criteriaList = Enumerable.Range(0, ids.Length).[Select](Function(s) New FunctionOperator(FunctionOperatorType.Contains, operandProp, ids(s)))
Dim criteria = New GroupOperator(groupOperatorType, criteriaList)
Return criteria
End Function
End Class
Public Class CustomVisitor
Implements IClientCriteriaVisitor(Of CriteriaOperator)
Public Sub New()
Values = New List(Of String)()
End Sub
Private privateValues As List(Of String)
Public Property Values() As List(Of String)
Get
Return privateValues
End Get
Private Set(ByVal value As List(Of String))
privateValues = value
End Set
End Property
Public Function AcceptOperator(ByVal theOperator As CriteriaOperator) As CriteriaOperator
If Object.ReferenceEquals(theOperator, Nothing) Then
Return Nothing
End If
Return theOperator.Accept(Of CriteriaOperator)(Me)
End Function
Protected Function VisitOperands(ByVal operands As CriteriaOperatorCollection) As CriteriaOperatorCollection
For Each operand As CriteriaOperator In operands
AcceptOperator(operand)
Next operand
Return operands
End Function
Protected Overridable Function VisitGroup(ByVal theOperator As GroupOperator) As CriteriaOperator
VisitOperands(theOperator.Operands)
Return theOperator
End Function
Protected Overridable Function VisitFunction(ByVal theOperator As FunctionOperator) As CriteriaOperator
VisitOperands(theOperator.Operands)
Return theOperator
End Function
Protected Overridable Function VisitValue(ByVal theOperand As OperandValue) As CriteriaOperator
Dim constantValue = TryCast(theOperand, ConstantValue)
If Not ReferenceEquals(constantValue, Nothing) Then
Values.Add(constantValue.Value.ToString())
End If
Return theOperand
End Function
#Region "IClientCriteriaVisitor"
Private Function IClientCriteriaVisitorGeneric_Visit(ByVal theOperand As JoinOperand) As CriteriaOperator Implements IClientCriteriaVisitor(Of CriteriaOperator).Visit
Throw New NotImplementedException()
End Function
Private Function IClientCriteriaVisitorGeneric_Visit(ByVal theOperand As OperandProperty) As CriteriaOperator Implements IClientCriteriaVisitor(Of CriteriaOperator).Visit
Return theOperand
End Function
Private Function IClientCriteriaVisitorGeneric_Visit(ByVal theOperand As AggregateOperand) As CriteriaOperator Implements IClientCriteriaVisitor(Of CriteriaOperator).Visit
Throw New NotImplementedException()
End Function
#End Region
#Region "ICriteriaVisitor"
Private Function ICriteriaVisitorGeneric_Visit(ByVal theOperator As FunctionOperator) As CriteriaOperator Implements ICriteriaVisitor(Of CriteriaOperator).Visit
Return VisitFunction(theOperator)
End Function
Private Function ICriteriaVisitorGeneric_Visit(ByVal theOperand As OperandValue) As CriteriaOperator Implements ICriteriaVisitor(Of CriteriaOperator).Visit
Return VisitValue(theOperand)
End Function
Private Function ICriteriaVisitorGeneric_Visit(ByVal theOperator As GroupOperator) As CriteriaOperator Implements ICriteriaVisitor(Of CriteriaOperator).Visit
Return VisitGroup(theOperator)
End Function
Private Function ICriteriaVisitorGeneric_Visit(ByVal theOperator As InOperator) As CriteriaOperator Implements ICriteriaVisitor(Of CriteriaOperator).Visit
Throw New NotImplementedException()
End Function
Private Function ICriteriaVisitorGeneric_Visit(ByVal theOperator As UnaryOperator) As CriteriaOperator Implements ICriteriaVisitor(Of CriteriaOperator).Visit
Throw New NotImplementedException()
End Function
Private Function ICriteriaVisitorGeneric_Visit(ByVal theOperator As BinaryOperator) As CriteriaOperator Implements ICriteriaVisitor(Of CriteriaOperator).Visit
Throw New NotImplementedException()
End Function
Private Function ICriteriaVisitorGeneric_Visit(ByVal theOperator As BetweenOperator) As CriteriaOperator Implements ICriteriaVisitor(Of CriteriaOperator).Visit
Throw New NotImplementedException()
End Function
#End Region
End Class
End Namespace