X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.spreadsheet.graph%2Fsrc%2Forg%2Fsimantics%2Fspreadsheet%2Fgraph%2FCellValueVisitor.java;h=0fa6ce0a599e65ec0132077c77d716502cd84c8a;hp=b0abb61b15627f3d828fd5404ccb6fd27a533797;hb=55ca14c4198659b908aeffc8d16e240b35a75e66;hpb=969bd23cab98a79ca9101af33334000879fb60c5 diff --git a/bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/CellValueVisitor.java b/bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/CellValueVisitor.java index b0abb61b1..0fa6ce0a5 100644 --- a/bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/CellValueVisitor.java +++ b/bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/CellValueVisitor.java @@ -183,8 +183,7 @@ public class CellValueVisitor implements AstValueVisitor { if(rightVal==null) rightResult = rightTemp.toString(); else rightResult = rightVal; } - - if ((leftResult instanceof String) || (rightResult instanceof String)) { + if ((leftResult instanceof String) && (rightResult instanceof String)) { String leftString = (leftResult.toString()).toLowerCase(); String rightString = (rightResult.toString()).toLowerCase(); if("<".equals(astRelation.op.trim())) return leftString.compareTo(rightString) < 0; @@ -195,8 +194,9 @@ public class CellValueVisitor implements AstValueVisitor { else if(">=".equals(astRelation.op.trim())) return leftString.compareTo(rightString) >= 0 ; else throw new IllegalStateException(); } else { - Number leftNumber = SpreadsheetGraphUtils.asNumber(leftResult); - Number rightNumber = SpreadsheetGraphUtils.asNumber(rightResult); + Number leftNumber = SpreadsheetGraphUtils.asDoubleWhereEmptyStringIsZero(leftResult); + Number rightNumber = SpreadsheetGraphUtils.asDoubleWhereEmptyStringIsZero(rightResult); + if(leftNumber==null || rightNumber==null) return false; if("<".equals(astRelation.op.trim())) return leftNumber.doubleValue() < rightNumber.doubleValue(); else if(">".equals(astRelation.op.trim())) return leftNumber.doubleValue() > rightNumber.doubleValue(); else if("=".equals(astRelation.op.trim())) return leftNumber.doubleValue() == rightNumber.doubleValue(); @@ -434,7 +434,8 @@ public class CellValueVisitor implements AstValueVisitor { @Override public Object visit(AstIdentifier id) { - throw new IllegalStateException(); + return FormulaError2.NAME.getString(); + //throw new IllegalStateException(); } @Override