Skip to content

Commit 39bf89b

Browse files
committed
change syntax for strings and variables
1 parent a4367e8 commit 39bf89b

13 files changed

Lines changed: 607 additions & 535 deletions

File tree

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

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,12 @@
77
import com.github.sidhant92.boolparser.constant.DataType;
88
import com.github.sidhant92.boolparser.constant.Operator;
99
import com.github.sidhant92.boolparser.domain.EvaluatedNode;
10+
import com.github.sidhant92.boolparser.domain.FieldNode;
1011
import com.github.sidhant92.boolparser.domain.arithmetic.UnaryNode;
1112
import com.github.sidhant92.boolparser.domain.arithmetic.ArithmeticNode;
1213
import com.github.sidhant92.boolparser.domain.logical.Node;
1314
import com.github.sidhant92.boolparser.domain.arithmetic.ArithmeticFunctionNode;
15+
import com.github.sidhant92.boolparser.exception.DataNotFoundException;
1416
import com.github.sidhant92.boolparser.exception.UnsupportedToken;
1517
import com.github.sidhant92.boolparser.function.FunctionEvaluatorService;
1618
import com.github.sidhant92.boolparser.operator.OperatorService;
@@ -54,15 +56,23 @@ private Object evaluateToken(final Node node, final Map<String, Object> data) {
5456
return evaluateArithmeticFunctionToken((ArithmeticFunctionNode) node, data);
5557
case UNARY:
5658
return evaluateUnaryToken((UnaryNode) node, data);
59+
case FIELD:
60+
return evaluateFieldToken((FieldNode) node, data);
5761
default:
5862
log.error("unsupported token {}", node.getTokenType());
5963
throw new UnsupportedToken();
6064
}
6165
}
6266

67+
private Object evaluateFieldToken(final FieldNode fieldNode, final Map<String, Object> data) {
68+
if (!data.containsKey(fieldNode.getField())) {
69+
throw new DataNotFoundException();
70+
}
71+
return data.get(fieldNode.getField());
72+
}
73+
6374
private Object evaluateUnaryToken(final UnaryNode unaryNode, final Map<String, Object> data) {
64-
return unaryNode.getDataType() == DataType.STRING ? ValueUtils.getValueFromMap(unaryNode.getValue().toString(), data)
65-
.orElse(unaryNode.getValue()) : unaryNode.getValue();
75+
return unaryNode.getValue();
6676
}
6777

6878
private Object evaluateArithmeticFunctionToken(final ArithmeticFunctionNode arithmeticFunctionNode, final Map<String, Object> data) {

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ private boolean evaluateToken(final Node node, final Map<String, Object> data) {
7373
private boolean evaluateComparisonToken(final ComparisonNode comparisonToken, final Map<String, Object> data) {
7474
final Object fieldData = ValueUtils.getValueFromMap(comparisonToken.getField(), data).orElseThrow(DataNotFoundException::new);
7575
final Object value = comparisonToken.getValue() instanceof ArithmeticBaseNode ? arithmeticExpressionEvaluator.evaluate(
76-
(Node) comparisonToken.getValue(), data) : comparisonToken.getValue();
76+
comparisonToken.getValue(), data) : comparisonToken.getValue();
7777
return operatorService.evaluateLogicalOperator(comparisonToken.getOperator(), ContainerDataType.PRIMITIVE, comparisonToken.getDataType(),
7878
fieldData, value);
7979
}

src/main/java/com/github/sidhant92/boolparser/constant/NodeType.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ public enum NodeType {
1111
IN,
1212
ARRAY,
1313
UNARY,
14+
FIELD,
1415
ARITHMETIC,
1516
ARITHMETIC_FUNCTION
1617
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package com.github.sidhant92.boolparser.domain;
2+
3+
import com.github.sidhant92.boolparser.constant.NodeType;
4+
import com.github.sidhant92.boolparser.domain.arithmetic.ArithmeticBaseNode;
5+
import lombok.AllArgsConstructor;
6+
import lombok.Builder;
7+
import lombok.Getter;
8+
import lombok.Setter;
9+
10+
@AllArgsConstructor
11+
@Getter
12+
@Setter
13+
@Builder
14+
public class FieldNode extends ArithmeticBaseNode {
15+
private final String field;
16+
17+
@Override
18+
public NodeType getTokenType() {
19+
return NodeType.FIELD;
20+
}
21+
}

src/main/java/com/github/sidhant92/boolparser/domain/logical/ComparisonNode.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
public class ComparisonNode extends Node {
2020
private final String field;
2121

22-
private final Object value;
22+
private final Node value;
2323

2424
private final Operator operator;
2525

src/main/java/com/github/sidhant92/boolparser/parser/antlr/BooleanExpressionBaseListener.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.github.sidhant92.boolparser.parser.antlr;// Generated from /Users/sid/Desktop/filter1/BooleanExpression.g4 by ANTLR 4.13.1
1+
package com.github.sidhant92.boolparser.parser.antlr;// Generated from /Users/sid/Desktop/filter2/BooleanExpression.g4 by ANTLR 4.13.1
22

33
import org.antlr.v4.runtime.ParserRuleContext;
44
import org.antlr.v4.runtime.tree.ErrorNode;

src/main/java/com/github/sidhant92/boolparser/parser/antlr/BooleanExpressionLexer.java

Lines changed: 242 additions & 243 deletions
Large diffs are not rendered by default.

src/main/java/com/github/sidhant92/boolparser/parser/antlr/BooleanExpressionListener.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.github.sidhant92.boolparser.parser.antlr;// Generated from /Users/sid/Desktop/filter1/BooleanExpression.g4 by ANTLR 4.13.1
1+
package com.github.sidhant92.boolparser.parser.antlr;// Generated from /Users/sid/Desktop/filter2/BooleanExpression.g4 by ANTLR 4.13.1
22
import org.antlr.v4.runtime.tree.ParseTreeListener;
33

44
/**

0 commit comments

Comments
 (0)