-package org.simantics.spreadsheet.graph.formula;\r
-\r
-import org.simantics.spreadsheet.graph.CellFormulaFunction;\r
-import org.simantics.spreadsheet.graph.CellValueVisitor;\r
-import org.simantics.spreadsheet.graph.SpreadsheetGraphUtils;\r
-import org.simantics.spreadsheet.graph.parser.ast.AstArgList;\r
-import org.simantics.spreadsheet.graph.parser.ast.AstNothing;\r
-import org.simantics.spreadsheet.graph.parser.ast.AstValue;\r
-\r
-public class IfFormulaFunction implements CellFormulaFunction<Object> {\r
-\r
- @Override\r
- public Object evaluate(CellValueVisitor visitor, AstArgList args) {\r
- if (args.values.size() != 3) throw new IllegalStateException();\r
- \r
- Object condition = args.values.get(0).accept(visitor);\r
- AstValue ifTrueResult = args.values.get(1);\r
- AstValue ifFalseResult = args.values.get(2);\r
- \r
- FormulaError2 error = FormulaError2.forObject(condition);\r
- if(error!=null) return error.getString();\r
-\r
- if (SpreadsheetGraphUtils.asBoolean(condition)) {\r
- if(ifTrueResult==null || ifTrueResult instanceof AstNothing)\r
- return 0;\r
- try {\r
- return ifTrueResult.accept(visitor);\r
- } catch (IllegalStateException e){\r
- return FormulaError2.NAME.getString();\r
- }\r
- }\r
- else {\r
- if(ifFalseResult==null || ifFalseResult instanceof AstNothing)\r
- return 0;\r
- try {\r
- return ifFalseResult.accept(visitor);\r
- } catch (IllegalStateException e){\r
- return FormulaError2.NAME.getString();\r
- }\r
- }\r
- }\r
+package org.simantics.spreadsheet.graph.formula;
+
+import org.simantics.spreadsheet.graph.CellFormulaFunction;
+import org.simantics.spreadsheet.graph.CellValueVisitor;
+import org.simantics.spreadsheet.graph.SpreadsheetGraphUtils;
+import org.simantics.spreadsheet.graph.parser.ast.AstArgList;
+import org.simantics.spreadsheet.graph.parser.ast.AstNothing;
+import org.simantics.spreadsheet.graph.parser.ast.AstValue;
+
+public class IfFormulaFunction implements CellFormulaFunction<Object> {
+
+ @Override
+ public Object evaluate(CellValueVisitor visitor, AstArgList args) {
+ if (args.values.size() != 3) throw new IllegalStateException();
+
+ Object condition = args.values.get(0).accept(visitor);
+ AstValue ifTrueResult = args.values.get(1);
+ AstValue ifFalseResult = args.values.get(2);
+
+ FormulaError2 error = FormulaError2.forObject(condition);
+ if(error!=null) return error.getString();
+
+ if (SpreadsheetGraphUtils.asBoolean(condition)) {
+ if(ifTrueResult==null || ifTrueResult instanceof AstNothing)
+ return 0;
+ try {
+ return ifTrueResult.accept(visitor);
+ } catch (IllegalStateException e){
+ return FormulaError2.NAME.getString();
+ }
+ }
+ else {
+ if(ifFalseResult==null || ifFalseResult instanceof AstNothing)
+ return 0;
+ try {
+ return ifFalseResult.accept(visitor);
+ } catch (IllegalStateException e){
+ return FormulaError2.NAME.getString();
+ }
+ }
+ }
}
\ No newline at end of file