String rightString = (rightResult.toString()).toLowerCase();\r
if("<".equals(astRelation.op.trim())) return leftString.compareTo(rightString) < 0;\r
else if(">".equals(astRelation.op.trim())) return leftString.compareTo(rightString) > 0;\r
- else if("=".equals(astRelation.op.trim())) return leftString.compareTo(rightString) == 0;\r
+ // empty string should equal zero (TODO: this is a hack, the proper fix should be somewhere earlier so other cases would work as well)\r
+ else if("=".equals(astRelation.op.trim())) return leftString.compareTo(rightString) == 0 || emptyAndZero(leftString, rightString) || emptyAndZero(rightString, leftString);\r
else if("<>".equals(astRelation.op.trim())) return leftString.compareTo(rightString) != 0 ;\r
else if("<=".equals(astRelation.op.trim())) return leftString.compareTo(rightString) <= 0 ;\r
else if(">=".equals(astRelation.op.trim())) return leftString.compareTo(rightString) >= 0 ;\r
}\r
}\r
\r
+ private static boolean emptyAndZero(String a, String b) {\r
+ try {\r
+ return a.isEmpty() && (Double.parseDouble(b) == 0);\r
+ }\r
+ catch (NumberFormatException e) {\r
+ return false;\r
+ }\r
+ }\r
+ \r
Object leftValueWithPrefix(Object result, AstValue value, String prefix, boolean forceNumber) {\r
if(result == null) {\r
Object obj = value.accept(this);\r