Skip to content

Commit 94cefda

Browse files
committed
remove string token
1 parent 3194129 commit 94cefda

File tree

16 files changed

+237
-287
lines changed

16 files changed

+237
-287
lines changed

README.md

Lines changed: 9 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -70,20 +70,12 @@ dependencies {
7070
Code
7171
```
7272
final BoolParser boolParser = new BoolParser();
73-
final Try<Token> tokenOptional = boolParser.parseExpression("name = test");
73+
final Try<Node> nodeOptional = boolParser.parseExpression("name = test");
7474
```
7575

76-
### Token Types Post Parsing
76+
### Node Types Post Parsing
7777
####
78-
StringToken
79-
```
80-
private final String field;
81-
82-
private final String value;
83-
```
84-
85-
####
86-
NumericToken
78+
NumericNode
8779
```
8880
private final String field;
8981
@@ -95,7 +87,7 @@ private final DataType dataType;
9587
```
9688

9789
####
98-
NumericRangeToken
90+
NumericRangeNode
9991
```
10092
private final String field;
10193
@@ -109,25 +101,25 @@ private final DataType toDataType;
109101
```
110102

111103
####
112-
BooleanToken
104+
BooleanNode
113105
```
114-
private Token left;
106+
private Node left;
115107
116-
private Token right;
108+
private Node right;
117109
118110
private LogicalOperationType operator;
119111
```
120112

121113
####
122-
UnaryToken
114+
UnaryNode
123115
```
124116
private final DataType dataType;
125117
126118
private final Object value;
127119
```
128120

129121
####
130-
InToken
122+
InNode
131123
```
132124
private final String field;
133125

src/main/java/com/github/sidhant92/boolparser/application/BooleanExpressionEvaluator.java

Lines changed: 24 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,12 @@
55
import com.github.sidhant92.boolparser.constant.ContainerDataType;
66
import com.github.sidhant92.boolparser.constant.DataType;
77
import com.github.sidhant92.boolparser.constant.Operator;
8-
import com.github.sidhant92.boolparser.domain.BooleanToken;
9-
import com.github.sidhant92.boolparser.domain.InToken;
10-
import com.github.sidhant92.boolparser.domain.NumericRangeToken;
11-
import com.github.sidhant92.boolparser.domain.NumericToken;
12-
import com.github.sidhant92.boolparser.domain.StringToken;
13-
import com.github.sidhant92.boolparser.domain.Token;
14-
import com.github.sidhant92.boolparser.domain.UnaryToken;
8+
import com.github.sidhant92.boolparser.domain.BooleanNode;
9+
import com.github.sidhant92.boolparser.domain.InNode;
10+
import com.github.sidhant92.boolparser.domain.NumericRangeNode;
11+
import com.github.sidhant92.boolparser.domain.ComparisonNode;
12+
import com.github.sidhant92.boolparser.domain.Node;
13+
import com.github.sidhant92.boolparser.domain.UnaryNode;
1514
import com.github.sidhant92.boolparser.exception.InvalidUnaryOperand;
1615
import com.github.sidhant92.boolparser.operator.OperatorService;
1716
import com.github.sidhant92.boolparser.parser.BoolExpressionParser;
@@ -34,47 +33,37 @@ public BooleanExpressionEvaluator(final BoolExpressionParser boolExpressionParse
3433
}
3534

3635
public Try<Boolean> evaluate(final String expression, final Map<String, Object> data) {
37-
final Try<Token> tokenOptional = boolExpressionParser.parseExpression(expression);
36+
final Try<Node> tokenOptional = boolExpressionParser.parseExpression(expression);
3837
return tokenOptional.map(node -> evaluateToken(node, data));
3938
}
4039

41-
private boolean evaluateToken(final Token token, final Map<String, Object> data) {
42-
switch (token.getTokenType()) {
43-
case STRING:
44-
return evaluateStringToken((StringToken) token, data);
45-
case NUMERIC:
46-
return evaluateNumericToken((NumericToken) token, data);
40+
private boolean evaluateToken(final Node node, final Map<String, Object> data) {
41+
switch (node.getTokenType()) {
42+
case COMPARISON:
43+
return evaluateComparisonToken((ComparisonNode) node, data);
4744
case NUMERIC_RANGE:
48-
return evaluateNumericRangeToken((NumericRangeToken) token, data);
45+
return evaluateNumericRangeToken((NumericRangeNode) node, data);
4946
case IN:
50-
return evaluateInToken((InToken) token, data);
47+
return evaluateInToken((InNode) node, data);
5148
case UNARY:
52-
return evaluateUnaryToken((UnaryToken) token, data);
49+
return evaluateUnaryToken((UnaryNode) node, data);
5350
case BOOLEAN:
54-
return evaluateBooleanNode((BooleanToken) token, data);
51+
return evaluateBooleanNode((BooleanNode) node, data);
5552
default:
5653
return false;
5754
}
5855
}
5956

60-
private boolean evaluateStringToken(final StringToken stringToken, final Map<String, Object> data) {
61-
if (checkFieldDataMissing(stringToken.getField(), data)) {
57+
private boolean evaluateComparisonToken(final ComparisonNode comparisonToken, final Map<String, Object> data) {
58+
if (checkFieldDataMissing(comparisonToken.getField(), data)) {
6259
return false;
6360
}
64-
final Object fieldData = data.get(stringToken.getField());
65-
return operatorService.evaluate(Operator.EQUALS, ContainerDataType.primitive, DataType.STRING, fieldData, stringToken.getValue());
61+
final Object fieldData = data.get(comparisonToken.getField());
62+
return operatorService.evaluate(comparisonToken.getOperator(), ContainerDataType.primitive, comparisonToken.getDataType(), fieldData,
63+
comparisonToken.getValue());
6664
}
6765

68-
private boolean evaluateNumericToken(final NumericToken numericToken, final Map<String, Object> data) {
69-
if (checkFieldDataMissing(numericToken.getField(), data)) {
70-
return false;
71-
}
72-
final Object fieldData = data.get(numericToken.getField());
73-
return operatorService.evaluate(numericToken.getOperator(), ContainerDataType.primitive, numericToken.getDataType(), fieldData,
74-
numericToken.getValue());
75-
}
76-
77-
private boolean evaluateNumericRangeToken(final NumericRangeToken numericRangeToken, final Map<String, Object> data) {
66+
private boolean evaluateNumericRangeToken(final NumericRangeNode numericRangeToken, final Map<String, Object> data) {
7867
if (checkFieldDataMissing(numericRangeToken.getField(), data)) {
7968
return false;
8069
}
@@ -86,7 +75,7 @@ private boolean evaluateNumericRangeToken(final NumericRangeToken numericRangeTo
8675
numericRangeToken.getToValue());
8776
}
8877

89-
private boolean evaluateInToken(final InToken inToken, final Map<String, Object> data) {
78+
private boolean evaluateInToken(final InNode inToken, final Map<String, Object> data) {
9079
if (checkFieldDataMissing(inToken.getField(), data)) {
9180
return false;
9281
}
@@ -98,7 +87,7 @@ private boolean evaluateInToken(final InToken inToken, final Map<String, Object>
9887
return operatorService.evaluate(Operator.IN, ContainerDataType.primitive, dataType, fieldData, values);
9988
}
10089

101-
private boolean evaluateUnaryToken(final UnaryToken unaryToken, final Map<String, Object> data) {
90+
private boolean evaluateUnaryToken(final UnaryNode unaryToken, final Map<String, Object> data) {
10291
if (unaryToken.getDataType().equals(DataType.BOOLEAN)) {
10392
return (boolean) unaryToken.getValue();
10493
}
@@ -112,7 +101,7 @@ private boolean evaluateUnaryToken(final UnaryToken unaryToken, final Map<String
112101
return (boolean) fieldValue;
113102
}
114103

115-
private boolean evaluateBooleanNode(final BooleanToken booleanToken, final Map<String, Object> data) {
104+
private boolean evaluateBooleanNode(final BooleanNode booleanToken, final Map<String, Object> data) {
116105
switch (booleanToken.getOperator()) {
117106
case AND:
118107
return evaluateToken(booleanToken.getLeft(), data) && evaluateToken(booleanToken.getRight(), data);

src/main/java/com/github/sidhant92/boolparser/constant/TokenType.java renamed to src/main/java/com/github/sidhant92/boolparser/constant/NodeType.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,9 @@
44
* @author sidhant.aggarwal
55
* @since 05/03/2023
66
*/
7-
public enum TokenType {
7+
public enum NodeType {
88
BOOLEAN,
9-
STRING,
10-
NUMERIC,
9+
COMPARISON,
1110
NUMERIC_RANGE,
1211
IN,
1312
UNARY

src/main/java/com/github/sidhant92/boolparser/domain/BooleanToken.java renamed to src/main/java/com/github/sidhant92/boolparser/domain/BooleanNode.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.github.sidhant92.boolparser.domain;
22

3-
import com.github.sidhant92.boolparser.constant.TokenType;
3+
import com.github.sidhant92.boolparser.constant.NodeType;
44
import com.github.sidhant92.boolparser.constant.LogicalOperationType;
55
import lombok.AllArgsConstructor;
66
import lombok.Builder;
@@ -15,15 +15,15 @@
1515
@Getter
1616
@Setter
1717
@Builder
18-
public class BooleanToken extends Token {
19-
private Token left;
18+
public class BooleanNode extends Node {
19+
private Node left;
2020

21-
private Token right;
21+
private Node right;
2222

2323
private LogicalOperationType operator;
2424

2525
@Override
26-
public TokenType getTokenType() {
27-
return TokenType.BOOLEAN;
26+
public NodeType getTokenType() {
27+
return NodeType.BOOLEAN;
2828
}
2929
}

src/main/java/com/github/sidhant92/boolparser/domain/NumericToken.java renamed to src/main/java/com/github/sidhant92/boolparser/domain/ComparisonNode.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.github.sidhant92.boolparser.domain;
22

33
import com.github.sidhant92.boolparser.constant.DataType;
4-
import com.github.sidhant92.boolparser.constant.TokenType;
4+
import com.github.sidhant92.boolparser.constant.NodeType;
55
import com.github.sidhant92.boolparser.constant.Operator;
66
import lombok.AllArgsConstructor;
77
import lombok.Builder;
@@ -16,7 +16,7 @@
1616
@Getter
1717
@Setter
1818
@Builder
19-
public class NumericToken extends Token {
19+
public class ComparisonNode extends Node {
2020
private final String field;
2121

2222
private final Object value;
@@ -26,7 +26,7 @@ public class NumericToken extends Token {
2626
private final DataType dataType;
2727

2828
@Override
29-
public TokenType getTokenType() {
30-
return TokenType.NUMERIC;
29+
public NodeType getTokenType() {
30+
return NodeType.COMPARISON;
3131
}
3232
}

src/main/java/com/github/sidhant92/boolparser/domain/InToken.java renamed to src/main/java/com/github/sidhant92/boolparser/domain/InNode.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import java.util.List;
44
import org.apache.commons.lang3.tuple.Pair;
55
import com.github.sidhant92.boolparser.constant.DataType;
6-
import com.github.sidhant92.boolparser.constant.TokenType;
6+
import com.github.sidhant92.boolparser.constant.NodeType;
77
import lombok.AllArgsConstructor;
88
import lombok.Builder;
99
import lombok.Getter;
@@ -13,12 +13,12 @@
1313
@Getter
1414
@Setter
1515
@Builder
16-
public class InToken extends Token {
16+
public class InNode extends Node {
1717
private final String field;
1818

1919
private final List<Pair<DataType, Object>> items;
2020
@Override
21-
public TokenType getTokenType() {
22-
return TokenType.IN;
21+
public NodeType getTokenType() {
22+
return NodeType.IN;
2323
}
2424
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.github.sidhant92.boolparser.domain;
2+
3+
import com.github.sidhant92.boolparser.constant.NodeType;
4+
5+
/**
6+
* @author sidhant.aggarwal
7+
* @since 05/03/2023
8+
*/
9+
public abstract class Node {
10+
public abstract NodeType getTokenType();
11+
}

src/main/java/com/github/sidhant92/boolparser/domain/NumericRangeToken.java renamed to src/main/java/com/github/sidhant92/boolparser/domain/NumericRangeNode.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.github.sidhant92.boolparser.domain;
22

33
import com.github.sidhant92.boolparser.constant.DataType;
4-
import com.github.sidhant92.boolparser.constant.TokenType;
4+
import com.github.sidhant92.boolparser.constant.NodeType;
55
import lombok.AllArgsConstructor;
66
import lombok.Builder;
77
import lombok.Getter;
@@ -15,7 +15,7 @@
1515
@Getter
1616
@Setter
1717
@Builder
18-
public class NumericRangeToken extends Token {
18+
public class NumericRangeNode extends Node {
1919
private final String field;
2020

2121
private final Object fromValue;
@@ -27,7 +27,7 @@ public class NumericRangeToken extends Token {
2727
private final DataType toDataType;
2828

2929
@Override
30-
public TokenType getTokenType() {
31-
return TokenType.NUMERIC_RANGE;
30+
public NodeType getTokenType() {
31+
return NodeType.NUMERIC_RANGE;
3232
}
3333
}

src/main/java/com/github/sidhant92/boolparser/domain/StringToken.java

Lines changed: 0 additions & 26 deletions
This file was deleted.

src/main/java/com/github/sidhant92/boolparser/domain/Token.java

Lines changed: 0 additions & 11 deletions
This file was deleted.

0 commit comments

Comments
 (0)