1 package org.simantics.spreadsheet.graph.formula;
\r
3 import org.simantics.spreadsheet.graph.CellFormulaFunction;
\r
4 import org.simantics.spreadsheet.graph.CellValueVisitor;
\r
5 import org.simantics.spreadsheet.graph.SpreadsheetGraphUtils;
\r
6 import org.simantics.spreadsheet.graph.SpreadsheetMatrix;
\r
7 import org.simantics.spreadsheet.graph.parser.ast.AstArgList;
\r
8 import org.simantics.spreadsheet.graph.parser.ast.AstRange;
\r
10 public class CountifFormulaFunction implements CellFormulaFunction<Integer> {
\r
13 public Integer evaluate(CellValueVisitor visitor, AstArgList args) {
\r
14 if (args.values.size() != 2) throw new IllegalStateException();
\r
16 AstRange range = (AstRange) args.values.get(0);
\r
17 SpreadsheetMatrix matrix = (SpreadsheetMatrix) range.accept(visitor);
\r
20 crit = args.values.get(1).accept(visitor);
\r
21 } catch (IllegalStateException e){
\r
25 String criteria = SpreadsheetGraphUtils.asString(crit);
\r
27 for (Object value : matrix.values) {
\r
28 if (SpreadsheetGraphUtils.matchCriteria(value, criteria))
\r
31 return Integer.valueOf(result);
\r