if(rightVal==null) rightResult = rightTemp.toString();\r
else rightResult = rightVal;\r
}\r
- \r
- if ((leftResult instanceof String) || (rightResult instanceof String)) {\r
+ if ((leftResult instanceof String) && (rightResult instanceof String)) {\r
String leftString = (leftResult.toString()).toLowerCase();\r
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
- // 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
else if(">=".equals(astRelation.op.trim())) return leftString.compareTo(rightString) >= 0 ;\r
else throw new IllegalStateException();\r
} else {\r
- Number leftNumber = SpreadsheetGraphUtils.asNumber(leftResult);\r
- Number rightNumber = SpreadsheetGraphUtils.asNumber(rightResult);\r
+ Number leftNumber = SpreadsheetGraphUtils.asDoubleWhereEmptyStringIsZero(leftResult);\r
+ Number rightNumber = SpreadsheetGraphUtils.asDoubleWhereEmptyStringIsZero(rightResult);\r
+ if(leftNumber==null || rightNumber==null) return false;\r
if("<".equals(astRelation.op.trim())) return leftNumber.doubleValue() < rightNumber.doubleValue();\r
else if(">".equals(astRelation.op.trim())) return leftNumber.doubleValue() > rightNumber.doubleValue();\r
else if("=".equals(astRelation.op.trim())) return leftNumber.doubleValue() == rightNumber.doubleValue();\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