]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.event/src/org/simantics/event/view/handler/DenyAction.java
Fixed all line endings of the repository
[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.datastructures.Callback;
16 import org.simantics.utils.ui.ErrorLogger;
17
18 /**
19  * @author Tuukka Lehtonen
20  */
21 public class DenyAction extends Action {
22
23     private final String virtualGraphId;
24     private final List<Resource> subjects;
25     private final String relationURI;
26
27     /**
28      * @param label
29      * @param image
30      * @param virtualGraphId
31      * @param tagURI
32      * @param tag <code>true</code> to add tag, <code>false</code> to remove tag
33      * @param input
34      */
35     public DenyAction(String label, ImageDescriptor image, String virtualGraphId, String relationURI, List<Resource> subjects) {
36         super(label, image);
37
38         this.virtualGraphId = virtualGraphId;
39         this.subjects = subjects;
40         this.relationURI = relationURI;
41     }
42
43     @Override
44     public void run() {
45         Session session = Simantics.peekSession();
46         if (session != null) {
47             VirtualGraph vg = virtualGraphId == null ? null :
48                 session.getService(VirtualGraphSupport.class).getWorkspacePersistent(virtualGraphId);
49             session.asyncRequest(new WriteRequest(vg) {
50                 @Override
51                 public void perform(WriteGraph graph) throws DatabaseException {
52                     Resource relation = graph.getResource(relationURI);
53                     for (Resource subject : subjects)
54                         graph.deny(subject, relation);
55                 }
56             }, new Callback<DatabaseException>() {
57                 @Override
58                 public void run(DatabaseException parameter) {
59                     if (parameter != null)
60                         ErrorLogger.defaultLogError(parameter);
61                 }
62             });
63         }
64     }
65
66 }