--- /dev/null
+package org.simantics.structural2.scl;\r
+\r
+import org.simantics.db.ReadGraph;\r
+import org.simantics.db.Resource;\r
+import org.simantics.db.common.request.ResourceRead;\r
+import org.simantics.db.exception.DatabaseException;\r
+import org.simantics.layer0.Layer0;\r
+import org.simantics.structural.stubs.StructuralResource2;\r
+\r
+public class FindPossibleComponentTypeRequest extends ResourceRead<Resource> {\r
+\r
+ public FindPossibleComponentTypeRequest(Resource resource) {\r
+ super(resource);\r
+ }\r
+\r
+ @Override\r
+ public Resource perform(ReadGraph graph) throws DatabaseException { \r
+ StructuralResource2 STR = StructuralResource2.getInstance(graph); \r
+ Resource type = graph.getPossibleObject(resource, STR.Defines);\r
+ if(type != null)\r
+ return type; \r
+\r
+ Layer0 L0 = Layer0.getInstance(graph);\r
+ Resource parent = graph.getPossibleObject(resource, L0.PartOf);\r
+ if(parent != null && graph.isInstanceOf(parent, STR.Composite))\r
+ return graph.syncRequest(new FindPossibleComponentTypeRequest(parent));\r
+ else\r
+ return null;\r
+ }\r
+\r
+}\r