1 package org.simantics.event.view.handler;
5 import org.eclipse.jface.action.Action;
6 import org.eclipse.jface.resource.ImageDescriptor;
7 import org.simantics.Simantics;
8 import org.simantics.db.Resource;
9 import org.simantics.db.Session;
10 import org.simantics.db.VirtualGraph;
11 import org.simantics.db.WriteGraph;
12 import org.simantics.db.common.request.WriteRequest;
13 import org.simantics.db.exception.DatabaseException;
14 import org.simantics.db.service.VirtualGraphSupport;
15 import org.simantics.utils.ui.ErrorLogger;
18 * @author Tuukka Lehtonen
20 public class DenyAction extends Action {
22 private final String virtualGraphId;
23 private final List<Resource> subjects;
24 private final String relationURI;
29 * @param virtualGraphId
31 * @param tag <code>true</code> to add tag, <code>false</code> to remove tag
34 public DenyAction(String label, ImageDescriptor image, String virtualGraphId, String relationURI, List<Resource> subjects) {
37 this.virtualGraphId = virtualGraphId;
38 this.subjects = subjects;
39 this.relationURI = relationURI;
44 Session session = Simantics.peekSession();
45 if (session != null) {
46 VirtualGraph vg = virtualGraphId == null ? null :
47 session.getService(VirtualGraphSupport.class).getWorkspacePersistent(virtualGraphId);
48 session.asyncRequest(new WriteRequest(vg) {
50 public void perform(WriteGraph graph) throws DatabaseException {
51 Resource relation = graph.getResource(relationURI);
52 for (Resource subject : subjects)
53 graph.deny(subject, relation);
57 ErrorLogger.defaultLogError(e);