]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/scl/scriptEditor/ReadSCLScriptDefinition.java
Support for SCL script database storage, editing and execution
[simantics/platform.git] / bundles / org.simantics.modeling.ui / src / org / simantics / modeling / ui / scl / scriptEditor / ReadSCLScriptDefinition.java
1 /*******************************************************************************
2  * Copyright (c) 2017 Association for Decentralized Information Management
3  * in Industry THTH ry.
4  * All rights reserved. This program and the accompanying materials
5  * are made available under the terms of the Eclipse Public License v1.0
6  * which accompanies this distribution, and is available at
7  * http://www.eclipse.org/legal/epl-v10.html
8  *
9  * Contributors:
10  *     Semantum Oy - initial API and implementation
11  *******************************************************************************/
12 package org.simantics.modeling.ui.scl.scriptEditor;
13
14 import org.simantics.databoard.Bindings;
15 import org.simantics.db.ReadGraph;
16 import org.simantics.db.Resource;
17 import org.simantics.db.common.request.UnaryRead;
18 import org.simantics.db.exception.DatabaseException;
19 import org.simantics.layer0.Layer0;
20 import org.simantics.utils.strings.StringUtils;
21
22 /**
23  * @author Tuukka Lehtonen
24  * @since 1.31.0
25  */
26 public class ReadSCLScriptDefinition extends UnaryRead<String, String> {
27
28     public ReadSCLScriptDefinition(String scriptURI) {
29         super(scriptURI);
30     }
31
32     @Override
33     public String perform(ReadGraph graph) throws DatabaseException {
34         Resource scriptResource = graph.getPossibleResource(parameter);
35         if (scriptResource == null)
36             return null;
37         Layer0 L0 = Layer0.getInstance(graph);
38         if (!graph.isInstanceOf(scriptResource, L0.SCLScript))
39             return null;
40         return StringUtils.safeString( graph.getPossibleRelatedValue(scriptResource, L0.SCLScript_definition, Bindings.STRING) );
41     }
42
43 }