]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/CellValueVisitor.java
Sync git svn branch with SVN repository r33303.
[simantics/platform.git] / bundles / org.simantics.spreadsheet.graph / src / org / simantics / spreadsheet / graph / CellValueVisitor.java
index 022326248c39bacdf395e484f06de8220410893a..0fa6ce0a599e65ec0132077c77d716502cd84c8a 100644 (file)
@@ -183,21 +183,20 @@ public class CellValueVisitor implements AstValueVisitor<Object> {
                        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
@@ -208,15 +207,6 @@ public class CellValueVisitor implements AstValueVisitor<Object> {
                }\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