]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/request/SetActiveSessionRole.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.db.layer0 / src / org / simantics / db / layer0 / request / SetActiveSessionRole.java
1 package org.simantics.db.layer0.request;\r
2 \r
3 import org.simantics.db.RequestProcessor;\r
4 import org.simantics.db.Resource;\r
5 import org.simantics.db.SessionModel;\r
6 import org.simantics.db.WriteGraph;\r
7 import org.simantics.db.common.request.WriteRequest;\r
8 import org.simantics.db.exception.DatabaseException;\r
9 import org.simantics.db.service.VirtualGraphSupport;\r
10 import org.simantics.layer0.Layer0;\r
11 import org.simantics.operation.Layer0X;\r
12 import org.simantics.user.UserResource;\r
13 \r
14 public class SetActiveSessionRole extends WriteRequest {\r
15     \r
16     final private Resource model;\r
17     final private Resource role;\r
18     \r
19     public SetActiveSessionRole(RequestProcessor processor, Resource model, Resource role) {\r
20         super(processor.getService(VirtualGraphSupport.class).getWorkspacePersistent("activations"));\r
21         this.model = model;\r
22         this.role = role;\r
23     }\r
24 \r
25     @Override\r
26     public void perform(WriteGraph graph) throws DatabaseException {\r
27         \r
28         Layer0 L0 = Layer0.getInstance(graph);\r
29         Layer0X L0X = Layer0X.getInstance(graph);\r
30         UserResource USER = UserResource.getInstance(graph);\r
31         Resource session = graph.getService(SessionModel.class).getResource();\r
32         \r
33         if(session != null) {\r
34             for(Resource selection : graph.getObjects(session, L0X.Session_HasRoleSelection)) {\r
35                 Resource selectionModel = graph.getPossibleObject(selection, USER.RoleSelection_HasModel);\r
36                 if(selectionModel.equals(model)) {\r
37                     graph.deny(selection, USER.RoleSelection_HasRole);\r
38                     graph.claim(selection, USER.RoleSelection_HasRole, role);\r
39                     return;\r
40                 }\r
41             }\r
42         }\r
43         \r
44         Resource selection = graph.newResource();\r
45         graph.claim(selection, L0.InstanceOf, null, USER.RoleSelection);\r
46         graph.claim(selection, USER.RoleSelection_HasModel, model);\r
47         graph.claim(selection, USER.RoleSelection_HasRole, role);\r
48         graph.claim(session, L0X.Session_HasRoleSelection, selection);\r
49         \r
50     }\r
51 \r
52 }\r