1 package org.simantics.db.layer0.request;
\r
3 import org.simantics.db.Resource;
\r
4 import org.simantics.db.VirtualGraph;
\r
5 import org.simantics.db.WriteGraph;
\r
6 import org.simantics.db.common.request.WriteResultRequest;
\r
7 import org.simantics.db.exception.DatabaseException;
\r
8 import org.simantics.db.service.VirtualGraphSupport;
\r
9 import org.simantics.operation.Layer0X;
\r
11 public class ActivateModel extends WriteResultRequest<Boolean> {
\r
13 final Resource project;
\r
14 final Resource model;
\r
16 public ActivateModel(Resource project, Resource model) {
\r
18 if(project == null) throw new IllegalArgumentException("project can not be null");
\r
19 this.project = project;
\r
24 public static Boolean perform(WriteGraph graph, Resource project, Resource model) throws DatabaseException {
\r
25 Layer0X L0X = Layer0X.getInstance(graph);
\r
26 if (model != null) {
\r
27 if (!graph.hasStatement(model, L0X.IsActivatedBy, project)) {
\r
28 graph.deny(project, L0X.Activates);
\r
29 graph.claim(project, L0X.Activates, model);
\r
33 if (graph.hasStatement(project, L0X.Activates)) {
\r
34 graph.deny(project, L0X.Activates);
\r
42 public Boolean perform(WriteGraph graph) throws DatabaseException {
\r
43 VirtualGraphSupport support = graph.getService(VirtualGraphSupport.class);
\r
44 VirtualGraph activations = support.getWorkspacePersistent("activations");
\r
45 VirtualGraph vg = graph.getProvider();
\r
46 if (vg == activations) {
\r
47 return perform(graph, project, model);
\r
49 return graph.syncRequest(new WriteResultRequest<Boolean>() {
\r
51 public Boolean perform(WriteGraph graph) throws DatabaseException {
\r
52 return ActivateModel.perform(graph, project, model);
\r