1111import com .github .sidhant92 .boolparser .domain .ComparisonNode ;
1212import com .github .sidhant92 .boolparser .domain .Node ;
1313import com .github .sidhant92 .boolparser .domain .UnaryNode ;
14+ import com .github .sidhant92 .boolparser .exception .DataNotFoundException ;
1415import com .github .sidhant92 .boolparser .exception .InvalidUnaryOperand ;
1516import com .github .sidhant92 .boolparser .operator .OperatorService ;
1617import com .github .sidhant92 .boolparser .parser .BoolExpressionParser ;
18+ import com .github .sidhant92 .boolparser .util .ValueUtils ;
1719import io .vavr .control .Try ;
1820import lombok .extern .slf4j .Slf4j ;
1921
@@ -55,19 +57,13 @@ private boolean evaluateToken(final Node node, final Map<String, Object> data) {
5557 }
5658
5759 private boolean evaluateComparisonToken (final ComparisonNode comparisonToken , final Map <String , Object > data ) {
58- if (checkFieldDataMissing (comparisonToken .getField (), data )) {
59- return false ;
60- }
61- final Object fieldData = data .get (comparisonToken .getField ());
60+ final Object fieldData = ValueUtils .getValueFromMap (comparisonToken .getField (), data ).orElseThrow (DataNotFoundException ::new );
6261 return operatorService .evaluate (comparisonToken .getOperator (), ContainerDataType .primitive , comparisonToken .getDataType (), fieldData ,
6362 comparisonToken .getValue ());
6463 }
6564
6665 private boolean evaluateNumericRangeToken (final NumericRangeNode numericRangeToken , final Map <String , Object > data ) {
67- if (checkFieldDataMissing (numericRangeToken .getField (), data )) {
68- return false ;
69- }
70- final Object fieldData = data .get (numericRangeToken .getField ());
66+ final Object fieldData = ValueUtils .getValueFromMap (numericRangeToken .getField (), data ).orElseThrow (DataNotFoundException ::new );
7167 return operatorService .evaluate (Operator .GREATER_THAN_EQUAL , ContainerDataType .primitive , numericRangeToken .getFromDataType (), fieldData ,
7268 numericRangeToken .getFromValue ()) && operatorService .evaluate (Operator .LESS_THAN_EQUAL ,
7369 ContainerDataType .primitive ,
@@ -76,10 +72,7 @@ private boolean evaluateNumericRangeToken(final NumericRangeNode numericRangeTok
7672 }
7773
7874 private boolean evaluateInToken (final InNode inToken , final Map <String , Object > data ) {
79- if (checkFieldDataMissing (inToken .getField (), data )) {
80- return false ;
81- }
82- final Object fieldData = data .get (inToken .getField ());
75+ final Object fieldData = ValueUtils .getValueFromMap (inToken .getField (), data ).orElseThrow (DataNotFoundException ::new );
8376 final DataType dataType = inToken .getItems ().get (0 ).getLeft ();
8477 final Object [] values = inToken .getItems ()
8578 .stream ()
@@ -91,14 +84,11 @@ private boolean evaluateUnaryToken(final UnaryNode unaryToken, final Map<String,
9184 if (unaryToken .getDataType ().equals (DataType .BOOLEAN )) {
9285 return (boolean ) unaryToken .getValue ();
9386 }
94- if (checkFieldDataMissing (unaryToken .getValue ().toString (), data )) {
95- return false ;
96- }
97- final Object fieldValue = data .get (unaryToken .getValue ().toString ());
98- if (!(fieldValue instanceof Boolean )) {
87+ final Object fieldData = ValueUtils .getValueFromMap (unaryToken .getValue ().toString (), data ).orElseThrow (DataNotFoundException ::new );
88+ if (!(fieldData instanceof Boolean )) {
9989 throw new InvalidUnaryOperand ();
10090 }
101- return (boolean ) fieldValue ;
91+ return (boolean ) fieldData ;
10292 }
10393
10494 private boolean evaluateBooleanNode (final BooleanNode booleanToken , final Map <String , Object > data ) {
@@ -111,12 +101,4 @@ private boolean evaluateBooleanNode(final BooleanNode booleanToken, final Map<St
111101 return !evaluateToken (booleanToken .getLeft (), data );
112102 }
113103 }
114-
115- private boolean checkFieldDataMissing (final String field , final Map <String , Object > data ) {
116- if (!data .containsKey (field )) {
117- log .error ("Error data not found for field {}" , field );
118- return true ;
119- }
120- return false ;
121- }
122104}
0 commit comments