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.event.ontology.EventResource;
18 * @author Tuukka Lehtonen
20 public class TagAction extends Action {
22 private final String virtualGraphId;
23 private final String tagURI;
24 private final boolean tag;
25 protected final List<Resource> resources;
30 * @param virtualGraphId
32 * @param tag <code>true</code> to add tag, <code>false</code> to remove tag
35 public TagAction(String label, ImageDescriptor image, String virtualGraphId, String tagURI, boolean tag, List<Resource> input) {
38 this.virtualGraphId = virtualGraphId;
41 this.resources = input;
46 Session session = Simantics.peekSession();
47 if (session == null) return;
49 final VirtualGraph vg = virtualGraphId == null ? null :
50 session.getService(VirtualGraphSupport.class).getWorkspacePersistent(virtualGraphId);
51 session.asyncRequest(new WriteRequest(vg) {
53 public void perform(WriteGraph graph) throws DatabaseException {
55 Resource tr = graph.getResource(tagURI);
56 for (Resource r : resources) {
58 graph.claim(r, tr, tr, r);
63 // Set milestone labels for all events of the event log
64 if (tagURI.equals(EventResource.URIs.Milestone)) {
65 CorrectMilestoneLabelsAction.correctMilestoneLabels(graph, vg, resources);
68 // Perform any extra writes desired
75 public void postTagWrite(WriteGraph graph) throws DatabaseException {