1 package org.simantics.modeling;
\r
3 import gnu.trove.map.hash.THashMap;
\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
14 public class ProceduralSubstructureMapRequest extends VariableRead<THashMap<String, Pair<String,Type>>>{
\r
16 public ProceduralSubstructureMapRequest(Variable composite) {
\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
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