Search in sources :

Example 16 with ScriptContextVariable

use of com.serotonin.m2m2.rt.script.ScriptContextVariable in project ma-core-public by MangoAutomation.

the class CompiledMangoJavaScript method initialize.

/**
 * Clear the engine scope and initialize it with an expandable context which is filled with the ScriptContextVariables and returned
 *
 * @throws ScriptPermissionsException - permission denied executing a command
 * @throws ScriptError - Execution failure, generally will have line and column number with message
 * @throws DataPointStateException - If a point is not enabled or missing (unless testRun is true, then a dummy point is created)
 */
public Map<String, IDataPointValueSource> initialize(List<ScriptContextVariable> variables) throws ScriptPermissionsException, ScriptError, DataPointStateException {
    Map<String, IDataPointValueSource> context = new HashMap<>();
    if (variables != null) {
        for (ScriptContextVariable variable : variables) {
            DataPointVO dpvo = DataPointDao.getInstance().get(variable.getDataPointId());
            if (dpvo != null) {
                DataPointRT dprt = Common.runtimeManager.getDataPoint(dpvo.getId());
                // So we can test with points disabled
                if (dprt == null) {
                    if (testRun) {
                        if (dpvo.getDefaultCacheSize() == 0) {
                            dpvo.setDefaultCacheSize(1);
                        }
                        // Generate some fake event detectors
                        DataPointWithEventDetectors dp = new DataPointWithEventDetectors(dpvo, new ArrayList<>());
                        DataSourceRT<? extends DataSourceVO> dataSource = DataSourceDao.getInstance().get(dpvo.getDataSourceId()).createDataSourceRT();
                        dprt = new DataPointRT(dp, dpvo.getPointLocator().createRuntime(), dataSource, null, pointValueDao, pointValueCache);
                    } else {
                        throw new DataPointStateException(variable.getDataPointId(), new TranslatableMessage("event.script.contextPointDisabled", variable.getVariableName(), dpvo.getXid()));
                    }
                }
                if (dprt != null)
                    context.put(variable.getVariableName(), dprt);
            } else {
                throw new DataPointStateException(variable.getDataPointId(), new TranslatableMessage("event.script.contextPointMissing", variable.getVariableName(), variable.getDataPointId()));
            }
        }
    }
    this.initialize(context);
    return context;
}
Also used : DataPointVO(com.serotonin.m2m2.vo.DataPointVO) HashMap(java.util.HashMap) DataPointStateException(com.serotonin.m2m2.rt.script.DataPointStateException) IDataPointValueSource(com.serotonin.m2m2.rt.dataImage.IDataPointValueSource) DataPointRT(com.serotonin.m2m2.rt.dataImage.DataPointRT) ScriptContextVariable(com.serotonin.m2m2.rt.script.ScriptContextVariable) DataPointWithEventDetectors(com.serotonin.m2m2.vo.dataPoint.DataPointWithEventDetectors) TranslatableMessage(com.serotonin.m2m2.i18n.TranslatableMessage)

Aggregations

DataPointVO (com.serotonin.m2m2.vo.DataPointVO)9 IDataPointValueSource (com.serotonin.m2m2.rt.dataImage.IDataPointValueSource)7 HashMap (java.util.HashMap)7 DataPointDao (com.serotonin.m2m2.db.dao.DataPointDao)6 ScriptContextVariable (com.serotonin.m2m2.rt.script.ScriptContextVariable)5 JsonArray (com.serotonin.json.type.JsonArray)4 JsonObject (com.serotonin.json.type.JsonObject)4 JsonString (com.serotonin.json.type.JsonString)4 TranslatableMessage (com.serotonin.m2m2.i18n.TranslatableMessage)4 DataPointRT (com.serotonin.m2m2.rt.dataImage.DataPointRT)4 PointValueTime (com.serotonin.m2m2.rt.dataImage.PointValueTime)3 IOException (java.io.IOException)3 PrintWriter (java.io.PrintWriter)3 StringWriter (java.io.StringWriter)3 ArrayList (java.util.ArrayList)3 Test (org.junit.Test)3 MangoPermission (com.infiniteautomation.mango.permission.MangoPermission)2 CompiledMangoJavaScript (com.infiniteautomation.mango.util.script.CompiledMangoJavaScript)2 MangoJavaScriptResult (com.infiniteautomation.mango.util.script.MangoJavaScriptResult)2 JsonBoolean (com.serotonin.json.type.JsonBoolean)2