]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.spreadsheet/src/org/simantics/spreadsheet/solver/formula/SpreadsheetEvaluationEnvironment.java
Introduce new DiagramViewer.getRuntimeFromManager()
[simantics/platform.git] / bundles / org.simantics.spreadsheet / src / org / simantics / spreadsheet / solver / formula / SpreadsheetEvaluationEnvironment.java
1 package org.simantics.spreadsheet.solver.formula;
2
3 import java.util.HashMap;
4 import java.util.Map;
5
6 import org.simantics.spreadsheet.solver.SpreadsheetBook;
7
8 public class SpreadsheetEvaluationEnvironment {
9
10     final private SpreadsheetBook book;
11     private Map<String, CellFormulaFunction<?>> functions = new HashMap<>();
12     public int iterationLimit = 100;
13
14     public SpreadsheetEvaluationEnvironment(SpreadsheetBook book) {
15         this.book = book;
16
17         functions.put("MATCH", new MatchFormulaFunction());
18         functions.put("ISERROR",new IsErrorFormulaFunction());
19         functions.put("IFERROR",new IfErrorFormulaFunction());
20         functions.put("IF", new IfFormulaFunction());
21         functions.put("OR", new OrFormulaFunction());
22         functions.put("AND", new AndFormulaFunction());
23         functions.put("ROUND", new RoundFormulaFunction());
24         functions.put("ROUNDUP", new RoundupFormulaFunction());
25         functions.put("SQRT", new SqrtFormulaFunction());
26         functions.put("PI", new PiFormulaFunction());
27         functions.put("COUNTIF", new CountifFormulaFunction());
28         functions.put("SUM", new SumFormulaFunction());
29         functions.put("AVERAGE", new AverageFormulaFunction());
30         functions.put("SUMIF", new SumifFormulaFunction());
31         functions.put("VLOOKUP", new VlookupFormulaFunction());
32         functions.put("HLOOKUP", new HlookupFormulaFunction());
33         functions.put("TODAY", new TodayFormulaFunction());
34         functions.put("LINEST", new LinestFormulaFunction());
35         functions.put("GEOMEAN", new GeomeanFormulaFunction());
36     }
37
38     public CellFormulaFunction<?> getFunction(String name) {
39         return functions.get(name);
40     }
41
42     public SpreadsheetBook getBook() {
43         return book;
44     }
45
46     private static Map<SpreadsheetBook, SpreadsheetEvaluationEnvironment> INSTANCES = new HashMap<>();
47
48     public static SpreadsheetEvaluationEnvironment getInstance(SpreadsheetBook book) {
49         SpreadsheetEvaluationEnvironment env = INSTANCES.get(book);
50         if (env == null) {
51             env = new SpreadsheetEvaluationEnvironment(book);
52             INSTANCES.put(book, env);
53         }
54         return env;
55     }
56
57     public static boolean removeInstance(SpreadsheetBook book) {
58         return INSTANCES.remove(book) != null;
59     }
60 }