--- /dev/null
+package org.simantics.modeling;\r
+\r
+import java.util.UUID;\r
+\r
+import org.simantics.Simantics;\r
+import org.simantics.databoard.Bindings;\r
+import org.simantics.db.Resource;\r
+import org.simantics.db.Session;\r
+import org.simantics.db.WriteGraph;\r
+import org.simantics.db.common.request.WriteRequest;\r
+import org.simantics.db.exception.DatabaseException;\r
+import org.simantics.db.layer0.util.Layer0Utils;\r
+import org.simantics.db.service.VirtualGraphSupport;\r
+import org.simantics.layer0.Layer0;\r
+import org.simantics.project.exception.ProjectException;\r
+import org.simantics.project.features.AbstractProjectFeature;\r
+\r
+public class ProjectSCLFeature extends AbstractProjectFeature {\r
+\r
+ @Override\r
+ public void configure() throws ProjectException {\r
+ \r
+ try {\r
+ \r
+ final Session session = getSession();\r
+ final VirtualGraphSupport support = session.getService(VirtualGraphSupport.class);\r
+ support.getWorkspacePersistent("documentation");\r
+\r
+ Simantics.getSession().syncRequest(new WriteRequest() {\r
+\r
+ @Override\r
+ public void perform(WriteGraph graph) throws DatabaseException {\r
+ \r
+ Resource project = Simantics.getProjectResource();\r
+ Resource commandSession = Layer0Utils.getPossibleChild(graph, project, "__scl__");\r
+ if(commandSession == null) {\r
+ Layer0 L0 = Layer0.getInstance(graph);\r
+ ModelingResources MOD = ModelingResources.getInstance(graph);\r
+ commandSession = graph.newResource();\r
+ graph.claim(commandSession, L0.InstanceOf, MOD.SCLCommandSession);\r
+ graph.claimLiteral(commandSession, L0.HasName, L0.NameOf, L0.String, "__scl__", Bindings.STRING);\r
+ graph.claim(project, L0.ConsistsOf, commandSession);\r
+ }\r
+ \r
+ }\r
+ \r
+ });\r
+ \r
+ } catch (DatabaseException e) {\r
+ \r
+ throw new ProjectException(e);\r
+ \r
+ }\r
+ \r
+ }\r
+\r
+ @Override\r
+ public void deconfigure() throws ProjectException {\r
+ \r
+ }\r
+ \r
+}\r