package org.simantics.diagram.profile.view; import org.simantics.Simantics; import org.simantics.browsing.ui.swt.ModelledActionImpl; import org.simantics.db.Resource; import org.simantics.db.WriteGraph; import org.simantics.db.common.request.WriteRequest; import org.simantics.db.common.utils.NameUtils; import org.simantics.db.common.utils.OrderedSetUtils; import org.simantics.db.exception.DatabaseException; import org.simantics.diagram.Logger; import org.simantics.diagram.stubs.DiagramResource; import org.simantics.layer0.Layer0; public class CreateProfileAction extends ModelledActionImpl { public CreateProfileAction(Resource configuration) { super(configuration); } public void run(final Resource runtimeDiagram) { try { Simantics.getSession().syncRequest(new WriteRequest() { @Override public void perform(WriteGraph graph) throws DatabaseException { Layer0 L0 = Layer0.getInstance(graph); DiagramResource DIA = DiagramResource.getInstance(graph); String modelURI = graph.getPossibleRelatedValue((Resource)runtimeDiagram, DIA.RuntimeDiagram_HasModelURI); if (modelURI == null) return; Resource model = graph.getPossibleResource(modelURI); if(model == null) return; String name = NameUtils.findFreshName(graph, "Profile", model, L0.ConsistsOf); Resource list = OrderedSetUtils.create(graph, DIA.Profile); Resource profile = graph.newResource(); graph.claim(profile, L0.InstanceOf, null, DIA.Profile); graph.claimLiteral(profile, L0.HasName, name); graph.claim(profile, DIA.HasEntries, null, list); graph.claim(model, L0.ConsistsOf, profile); //graph.claim(model, DIA.HasProfile, profile); } }); } catch (DatabaseException e) { Logger.defaultLogError(e); } } }