]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.event/src/org/simantics/event/view/handler/DenyAction.java
Merge "Use Consumer interface instead of deprecated Callback interface"
[simantics/platform.git] / bundles / org.simantics.event / src / org / simantics / event / view / handler / DenyAction.java
1 package org.simantics.event.view.handler;
2
3 import java.util.List;
4
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;
16
17 /**
18  * @author Tuukka Lehtonen
19  */
20 public class DenyAction extends Action {
21
22     private final String virtualGraphId;
23     private final List<Resource> subjects;
24     private final String relationURI;
25
26     /**
27      * @param label
28      * @param image
29      * @param virtualGraphId
30      * @param tagURI
31      * @param tag <code>true</code> to add tag, <code>false</code> to remove tag
32      * @param input
33      */
34     public DenyAction(String label, ImageDescriptor image, String virtualGraphId, String relationURI, List<Resource> subjects) {
35         super(label, image);
36
37         this.virtualGraphId = virtualGraphId;
38         this.subjects = subjects;
39         this.relationURI = relationURI;
40     }
41
42     @Override
43     public void run() {
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) {
49                 @Override
50                 public void perform(WriteGraph graph) throws DatabaseException {
51                     Resource relation = graph.getResource(relationURI);
52                     for (Resource subject : subjects)
53                         graph.deny(subject, relation);
54                 }
55             }, e -> {
56                 if (e != null)
57                     ErrorLogger.defaultLogError(e);
58             });
59         }
60     }
61
62 }