1 package org.simantics.db.layer0.request;
\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
14 public class SetActiveSessionRole extends WriteRequest {
\r
16 final private Resource model;
\r
17 final private Resource role;
\r
19 public SetActiveSessionRole(RequestProcessor processor, Resource model, Resource role) {
\r
20 super(processor.getService(VirtualGraphSupport.class).getWorkspacePersistent("activations"));
\r
26 public void perform(WriteGraph graph) throws DatabaseException {
\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
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
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