Skip to content

Commit a6a7992

Browse files
committed
code cleanup
1 parent 4cc2de6 commit a6a7992

File tree

1 file changed

+14
-9
lines changed

1 file changed

+14
-9
lines changed

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

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -81,18 +81,23 @@ private boolean evaluateComparisonToken(final ComparisonNode comparisonToken, fi
8181
comparisonToken.getValue(), data) : comparisonToken.getValue();
8282
final DataType dataType = ValueUtils.getDataType(value);
8383
final DataType fieldDataType = ValueUtils.getDataType(fieldData);
84-
return operatorService.evaluateLogicalOperator(comparisonToken.getOperator(), ContainerDataType.PRIMITIVE, fieldData,
85-
fieldDataType, Collections.singletonList(Pair.of(value, dataType)));
84+
return operatorService.evaluateLogicalOperator(comparisonToken.getOperator(), ContainerDataType.PRIMITIVE, fieldData, fieldDataType,
85+
Collections.singletonList(Pair.of(value, dataType)));
8686
}
8787

8888
private boolean evaluateNumericRangeToken(final NumericRangeNode numericRangeToken, final Map<String, Object> data) {
8989
final Object fieldData = ValueUtils.getValueFromMap(numericRangeToken.getField(), data)
9090
.orElseThrow(() -> new DataNotFoundException(numericRangeToken.getField()));
91-
return operatorService.evaluateLogicalOperator(Operator.GREATER_THAN_EQUAL, ContainerDataType.PRIMITIVE, fieldData,
92-
numericRangeToken.getFromDataType(), Collections.singletonList(
93-
Pair.of(numericRangeToken.getFromValue(), numericRangeToken.getFromDataType()))) && operatorService.evaluateLogicalOperator(
94-
Operator.LESS_THAN_EQUAL, ContainerDataType.PRIMITIVE, fieldData, numericRangeToken.getToDataType(),
95-
Collections.singletonList(Pair.of(numericRangeToken.getToValue(), numericRangeToken.getToDataType())));
91+
final DataType fieldDataType = ValueUtils.getDataType(fieldData);
92+
final List<Pair<Object, DataType>> fromValues = Collections.singletonList(
93+
Pair.of(numericRangeToken.getFromValue(), numericRangeToken.getFromDataType()));
94+
final List<Pair<Object, DataType>> toValues = Collections.singletonList(
95+
Pair.of(numericRangeToken.getToValue(), numericRangeToken.getToDataType()));
96+
final boolean leftResult = operatorService.evaluateLogicalOperator(Operator.GREATER_THAN_EQUAL, ContainerDataType.PRIMITIVE, fieldData,
97+
fieldDataType, fromValues);
98+
final boolean rightResult = operatorService.evaluateLogicalOperator(Operator.LESS_THAN_EQUAL, ContainerDataType.PRIMITIVE, fieldData,
99+
fieldDataType, toValues);
100+
return leftResult && rightResult;
96101
}
97102

98103
private boolean evaluateInToken(final InNode inToken, final Map<String, Object> data) {
@@ -123,18 +128,18 @@ private List<EvaluatedNode> resolveArrayElements(final List<Node> items, final M
123128
private boolean evaluateArrayToken(final ArrayNode arrayNode, final Map<String, Object> data) {
124129
final Object fieldData = ValueUtils.getValueFromMap(arrayNode.getField(), data)
125130
.orElseThrow(() -> new DataNotFoundException(arrayNode.getField()));
131+
final DataType fieldDataType = ValueUtils.getDataType(fieldData);
126132
final List<EvaluatedNode> items = resolveArrayElements(arrayNode.getItems(), data);
127133
if (items
128134
.stream()
129135
.map(EvaluatedNode::getDataType).distinct().count() > 1) {
130136
throw new HeterogeneousArrayException();
131137
}
132-
final DataType dataType = items.get(0).getDataType();
133138
final List<Pair<Object, DataType>> values = items
134139
.stream()
135140
.map(item -> Pair.of(item.getValue(), item.getDataType()))
136141
.collect(Collectors.toList());
137-
return operatorService.evaluateLogicalOperator(arrayNode.getOperator(), ContainerDataType.LIST, fieldData, dataType, values);
142+
return operatorService.evaluateLogicalOperator(arrayNode.getOperator(), ContainerDataType.LIST, fieldData, fieldDataType, values);
138143
}
139144

140145
private boolean evaluateUnaryToken(final UnaryNode unaryToken, final Map<String, Object> data) {

0 commit comments

Comments
 (0)