]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/Sources.java
Changing existing log4j logging to use slf4j
[simantics/platform.git] / bundles / org.simantics.spreadsheet.graph / src / org / simantics / spreadsheet / graph / Sources.java
1 package org.simantics.spreadsheet.graph;\r
2 \r
3 import java.util.Collections;\r
4 import java.util.HashMap;\r
5 import java.util.List;\r
6 import java.util.Map;\r
7 \r
8 import org.simantics.Simantics;\r
9 import org.simantics.db.ReadGraph;\r
10 import org.simantics.db.Resource;\r
11 import org.simantics.db.exception.DatabaseException;\r
12 import org.simantics.db.layer0.adapter.Instances;\r
13 import org.simantics.db.layer0.request.VariableRead;\r
14 import org.simantics.db.layer0.variable.Variable;\r
15 import org.simantics.db.layer0.variable.Variables;\r
16 import org.simantics.scl.runtime.function.Function;\r
17 import org.simantics.spreadsheet.resource.SpreadsheetResource;\r
18 \r
19 public class Sources extends VariableRead<Map<String,Variable>> {\r
20 \r
21         public Sources(Variable variable) {\r
22                 super(variable);\r
23         }\r
24 \r
25         @Override\r
26         public Map<String,Variable> perform(ReadGraph graph) throws DatabaseException {\r
27                 \r
28                 SpreadsheetResource SHEET = SpreadsheetResource.getInstance(graph);\r
29                 Instances query = graph.adapt(SHEET.SourceContribution, Instances.class);\r
30                 Resource indexRoot = variable.getIndexRoot(graph);\r
31                 if(indexRoot == null) return Collections.emptyMap();\r
32                 \r
33                 Map<String,Variable> result = new HashMap<String,Variable>();\r
34                 for(Resource source : query.find(graph, indexRoot)) {\r
35 \r
36                         Variable sv = Variables.getVariable(graph, source);\r
37                         @SuppressWarnings("rawtypes")\r
38                         Function f = sv.getPropertyValue(graph, SHEET.SourceContribution_function);\r
39                         List<Variable> in = Simantics.<List<Variable>>applySCLRead(graph, f, variable.getRepresents(graph));\r
40                         for(Variable var : in) {\r
41                                 Function f2 = sv.getPropertyValue(graph, SHEET.SourceContribution_labeler);\r
42                                 String key = Simantics.<String>applySCLRead(graph, f2, var);\r
43                                 result.put(key, var);\r
44                         }\r
45                 }\r
46                 return result;\r
47         }\r
48         \r
49 }\r