]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/SpreadsheetVariableBuilder.java
Changing existing log4j logging to use slf4j
[simantics/platform.git] / bundles / org.simantics.spreadsheet.graph / src / org / simantics / spreadsheet / graph / SpreadsheetVariableBuilder.java
1 package org.simantics.spreadsheet.graph;\r
2 \r
3 import org.simantics.db.ReadGraph;\r
4 import org.simantics.db.Resource;\r
5 import org.simantics.db.exception.DatabaseException;\r
6 import org.simantics.db.layer0.variable.NodeManagerVariableBuilder;\r
7 import org.simantics.db.layer0.variable.NodeSupport;\r
8 import org.simantics.db.layer0.variable.ProxyChildVariable;\r
9 import org.simantics.db.layer0.variable.StandardGraphChildVariable;\r
10 import org.simantics.db.layer0.variable.Variable;\r
11 import org.simantics.db.layer0.variable.VariableNode;\r
12 import org.simantics.spreadsheet.graph.function.SpreadsheetRootVariable;\r
13 \r
14 public class SpreadsheetVariableBuilder extends NodeManagerVariableBuilder {\r
15 \r
16     @Override\r
17     public Variable buildChild(ReadGraph graph, Variable parent, VariableNode node, Resource child) throws DatabaseException {\r
18         \r
19         // For proxies, return a variable with a node manager\r
20         if(parent instanceof ProxyChildVariable) {\r
21             String sessionName = parent.getURI(graph);\r
22             return createChild(graph, parent, sessionName, child);\r
23         }\r
24         //  For others return a standard variable\r
25         return new StandardGraphChildVariable(parent, node, child);\r
26         \r
27     }\r
28 \r
29     @Override\r
30     protected Variable createChild(ReadGraph graph, Variable parent, String sessionName, Resource child) throws DatabaseException {\r
31         NodeSupport<?> support = getNodeSupport(graph, sessionName);\r
32         return new SpreadsheetRootVariable(parent, new VariableNode(support, getRoot(graph, support, sessionName)), child);\r
33     }\r
34     \r
35 \r
36         @Override\r
37         protected NodeSupport<?> getNodeSupport(ReadGraph graph, String sessionName) throws DatabaseException {\r
38         return SpreadsheetSessionManager.getInstance().getOrCreateNodeSupport(graph, sessionName);\r
39         }\r
40         \r
41         @Override\r
42         protected Object getRoot(ReadGraph graph, NodeSupport<?> support, String sessionName) {\r
43                 SpreadsheetNodeManager manager = (SpreadsheetNodeManager)support.manager;\r
44                 return manager.getRoot();\r
45         }\r
46         \r
47 }