]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.modeling/src/org/simantics/modeling/ProjectSCLFeature.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.modeling / src / org / simantics / modeling / ProjectSCLFeature.java
diff --git a/bundles/org.simantics.modeling/src/org/simantics/modeling/ProjectSCLFeature.java b/bundles/org.simantics.modeling/src/org/simantics/modeling/ProjectSCLFeature.java
new file mode 100644 (file)
index 0000000..5a98248
--- /dev/null
@@ -0,0 +1,62 @@
+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