]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.modeling/src/org/simantics/modeling/ProjectSCLFeature.java
Merge commit 'd7afa23'
[simantics/platform.git] / bundles / org.simantics.modeling / src / org / simantics / modeling / ProjectSCLFeature.java
1 package org.simantics.modeling;\r
2 \r
3 import java.util.UUID;\r
4 \r
5 import org.simantics.Simantics;\r
6 import org.simantics.databoard.Bindings;\r
7 import org.simantics.db.Resource;\r
8 import org.simantics.db.Session;\r
9 import org.simantics.db.WriteGraph;\r
10 import org.simantics.db.common.request.WriteRequest;\r
11 import org.simantics.db.exception.DatabaseException;\r
12 import org.simantics.db.layer0.util.Layer0Utils;\r
13 import org.simantics.db.service.VirtualGraphSupport;\r
14 import org.simantics.layer0.Layer0;\r
15 import org.simantics.project.exception.ProjectException;\r
16 import org.simantics.project.features.AbstractProjectFeature;\r
17 \r
18 public class ProjectSCLFeature extends AbstractProjectFeature {\r
19 \r
20         @Override\r
21         public void configure() throws ProjectException {\r
22                 \r
23                 try {\r
24                         \r
25                 final Session session = getSession();\r
26                 final VirtualGraphSupport support = session.getService(VirtualGraphSupport.class);\r
27                 support.getWorkspacePersistent("documentation");\r
28 \r
29                         Simantics.getSession().syncRequest(new WriteRequest() {\r
30 \r
31                                 @Override\r
32                                 public void perform(WriteGraph graph) throws DatabaseException {\r
33                                         \r
34                                         Resource project = Simantics.getProjectResource();\r
35                                         Resource commandSession = Layer0Utils.getPossibleChild(graph, project, "__scl__");\r
36                                         if(commandSession == null) {\r
37                                                 Layer0 L0 = Layer0.getInstance(graph);\r
38                                                 ModelingResources MOD = ModelingResources.getInstance(graph);\r
39                                                 commandSession = graph.newResource();\r
40                                                 graph.claim(commandSession, L0.InstanceOf, MOD.SCLCommandSession);\r
41                                                 graph.claimLiteral(commandSession, L0.HasName, L0.NameOf, L0.String, "__scl__", Bindings.STRING);\r
42                                                 graph.claim(project, L0.ConsistsOf, commandSession);\r
43                                         }\r
44                                         \r
45                                 }\r
46                                 \r
47                         });\r
48                         \r
49                 } catch (DatabaseException e) {\r
50                         \r
51                         throw new ProjectException(e);\r
52                         \r
53                 }\r
54                 \r
55         }\r
56 \r
57         @Override\r
58         public void deconfigure() throws ProjectException {\r
59                 \r
60         }\r
61         \r
62 }\r