]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.modeling/src/org/simantics/modeling/ProceduralSubstructureMapRequest.java
Merge commit 'd7afa23'
[simantics/platform.git] / bundles / org.simantics.modeling / src / org / simantics / modeling / ProceduralSubstructureMapRequest.java
1 package org.simantics.modeling;\r
2 \r
3 import gnu.trove.map.hash.THashMap;\r
4 \r
5 import org.simantics.db.ReadGraph;\r
6 import org.simantics.db.exception.DatabaseException;\r
7 import org.simantics.db.layer0.request.PropertyInfo;\r
8 import org.simantics.db.layer0.request.PropertyInfoRequest;\r
9 import org.simantics.db.layer0.request.VariableRead;\r
10 import org.simantics.db.layer0.variable.Variable;\r
11 import org.simantics.scl.compiler.types.Type;\r
12 import org.simantics.utils.datastructures.Pair;\r
13 \r
14 public class ProceduralSubstructureMapRequest extends VariableRead<THashMap<String, Pair<String,Type>>>{\r
15 \r
16     public ProceduralSubstructureMapRequest(Variable composite) {\r
17         super(composite);\r
18     }\r
19 \r
20     @Override\r
21     public THashMap<String, Pair<String,Type>> perform(ReadGraph graph) throws DatabaseException {\r
22         THashMap<String, Pair<String,Type>> propertyMap = new THashMap<String, Pair<String,Type>>();\r
23         for(Variable child : variable.getChildren(graph)) {\r
24                 for(Variable property : child.getProperties(graph)) {\r
25                     PropertyInfo propertyInfo = graph.syncRequest(new PropertyInfoRequest(property.getPredicateResource(graph)));\r
26                 propertyMap.put(child.getName(graph) + "." + propertyInfo.name,\r
27                         Pair.make("/" + child.getName(graph) + "#" + propertyInfo.name,\r
28                                 SCLTypeUtils.getType(propertyInfo)));\r
29                 }\r
30         }\r
31         for(Variable property : variable.getProperties(graph)) {\r
32             PropertyInfo propertyInfo = graph.syncRequest(new PropertyInfoRequest(property.getPredicateResource(graph)));\r
33             propertyMap.put(propertyInfo.name,\r
34                     Pair.make("#" + propertyInfo.name,\r
35                             SCLTypeUtils.getType(propertyInfo)));\r
36         }\r
37         return propertyMap;\r
38     }\r
39 \r
40 }\r