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