Class Jep

  • All Implemented Interfaces:
    adams.core.AdditionalInformationHandler, adams.core.CleanUpHandler, adams.core.Destroyable, adams.core.GlobalInfoSupporter, adams.core.logging.LoggingLevelHandler, adams.core.logging.LoggingSupporter, adams.core.option.OptionHandler, adams.core.QuickInfoSupporter, adams.core.ShallowCopySupporter<adams.flow.core.Actor>, adams.core.SizeOfHandler, adams.core.Stoppable, adams.core.StoppableWithFeedback, adams.core.VariablesInspectionHandler, adams.event.VariableChangeListener, adams.flow.core.Actor, adams.flow.core.ErrorHandler, adams.flow.core.OutputProducer, Serializable, Comparable

    public class Jep
    extends adams.flow.source.AbstractSimpleSource
    Executes the Python script using Jep.
    The 'inputs' are items to retrieve from storage and store globally in the interpreter before executing the script.
    The 'outputs' are variables to put back into storeage.
    The 'forwards' are variables to forward as a map in the flow.
    For more information on Jep see:
    https://github.com/ninia/jep/

    By default, a global Jep scripting engine is used for executing scripts sequentially. Using a adams.flow.standalone.JepEngine actor in the flow allows to avoid this bottleneck, but the user needs to make sure that variables are unique across the scripts run in parallel.

    Input/output:
    - generates:
       java.util.Map


    -logging-level <OFF|SEVERE|WARNING|INFO|CONFIG|FINE|FINER|FINEST> (property: loggingLevel)
        The logging level for outputting errors and debugging output.
        default: WARNING
        min-user-mode: Expert
     
    -name <java.lang.String> (property: name)
        The name of the actor.
        default: Jep
     
    -annotation <adams.core.base.BaseAnnotation> (property: annotations)
        The annotations to attach to this actor.
        default:
     
    -skip <boolean> (property: skip)
        If set to true, transformation is skipped and the input token is just forwarded
        as it is.
        default: false
     
    -stop-flow-on-error <boolean> (property: stopFlowOnError)
        If set to true, the flow execution at this level gets stopped in case this
        actor encounters an error; the error gets propagated; useful for critical
        actors.
        default: false
        min-user-mode: Expert
     
    -silent <boolean> (property: silent)
        If enabled, then no errors are output in the console; Note: the enclosing
        actor handler must have this enabled as well.
        default: false
        min-user-mode: Expert
     
    -script <adams.core.io.PlaceholderFile> (property: scriptFile)
        The script file to execute.
        default: ${CWD}
     
    -inline-script <adams.core.scripting.JepScript> (property: inlineScript)
        The inline script, if not using an external script file.
        default:
     
    -expand-vars <boolean> (property: expandVariables)
        If enabled, all ADAMS variables get expanded before executing the script.
        default: false
     
    -inputs <adams.flow.control.VariableNameStorageNamePair> [-inputs ...] (property: inputs)
        The storage items to add to the interpreter with the specified variable
        names before executing the script.
        default:
     
    -outputs <adams.flow.control.VariableNameStorageNamePair> [-outputs ...] (property: outputs)
        The Python variables to put back into storage after executing the script.
        default:
     
    -forwards <adams.core.base.BaseString> [-forwards ...] (property: forwards)
        The Python variables to forward in a map after executing the script.
        default:
     
    Author:
    fracpete (fracpete at waikato dot ac dot nz)
    See Also:
    Serialized Form
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected JepEngine m_Engine
      the engine in use.
      protected boolean m_ExpandVariables
      whether to expand variables.
      protected adams.core.base.BaseString[] m_Forwards
      the forwarded values.
      protected JepScript m_InlineScript
      the inline script.
      protected adams.flow.control.VariableNameStorageNamePair[] m_Inputs
      the input values.
      protected adams.flow.control.VariableNameStorageNamePair[] m_Outputs
      the output values.
      protected adams.core.io.PlaceholderFile m_ScriptFile
      the script.
      • Fields inherited from class adams.flow.source.AbstractSimpleSource

        m_OutputToken
      • Fields inherited from class adams.flow.core.AbstractActor

        m_Annotations, m_BackupState, m_DetectedObjectVariables, m_DetectedVariables, m_ErrorHandler, m_Executed, m_Executing, m_ExecutionListeningSupporter, m_FullName, m_LoggingPrefix, m_Name, m_Parent, m_ScopeHandler, m_Self, m_Silent, m_Skip, m_StopFlowOnError, m_StopMessage, m_Stopped, m_StorageHandler, m_VariablesUpdated
      • Fields inherited from class adams.core.option.AbstractOptionHandler

        m_OptionManager
      • Fields inherited from class adams.core.logging.LoggingObject

        m_Logger, m_LoggingIsEnabled, m_LoggingLevel
      • Fields inherited from interface adams.flow.core.Actor

        FILE_EXTENSION, FILE_EXTENSION_GZ
    • Constructor Summary

      Constructors 
      Constructor Description
      Jep()  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void defineOptions()
      Adds options to the internal list of options.
      protected String doExecute()
      Executes the flow item.
      String expandVariablesTipText()
      Returns the tip text for this property.
      String forwardsTipText()
      Returns the tip text for this property.
      Class[] generates()
      Returns the class of objects that it generates.
      protected JepScript getDefaultInlineScript()
      Returns the default inline script.
      boolean getExpandVariables()
      Returns whether to expand ADAMS variables.
      adams.core.base.BaseString[] getForwards()
      Gets the values to forward, i.e., the variables to forward in the map after executing the script.
      JepScript getInlineScript()
      Gets the inline script to use instead of the external script file.
      adams.flow.control.VariableNameStorageNamePair[] getInputs()
      Gets the input values, i.e., storage items that get added to the interpreter with the specified variable names.
      adams.flow.control.VariableNameStorageNamePair[] getOutputs()
      Gets the output values, i.e., the variables to put back into storage after executing the script.
      String getQuickInfo()
      Returns a quick info about the actor, which will be displayed in the GUI.
      adams.core.io.PlaceholderFile getScriptFile()
      Gets the script file.
      String globalInfo()
      Returns a string describing the object.
      String inlineScriptTipText()
      Returns the tip text for this property.
      String inputsTipText()
      Returns the tip text for this property.
      String outputsTipText()
      Returns the tip text for this property.
      String scriptFileTipText()
      Returns the tip text for this property.
      void setExpandVariables​(boolean value)
      Sets whether to expand ADAMS variables.
      void setForwards​(adams.core.base.BaseString[] value)
      Sets the values to forward, i.e., the variables to forward in the map after executing the script.
      void setInlineScript​(JepScript value)
      Sets the inline script to use instead of the external script file.
      void setInputs​(adams.flow.control.VariableNameStorageNamePair[] value)
      Sets the input values, i.e., storage items that get added to the interpreter with the specified variable names.
      void setOutputs​(adams.flow.control.VariableNameStorageNamePair[] value)
      Sets the output values, i.e., the variables to put back into storage after executing the script.
      void setScriptFile​(adams.core.io.PlaceholderFile value)
      Sets the script file.
      String setUp()
      Initializes the item for flow execution.
      • Methods inherited from class adams.flow.source.AbstractSimpleSource

        hasPendingOutput, initialize, output, reset
      • Methods inherited from class adams.flow.core.AbstractActor

        annotationsTipText, backupState, canInspectOptions, canPerformSetUpCheck, cleanUp, compareTo, configureLogger, destroy, equals, execute, finalUpdateVariables, findVariables, findVariables, forceVariables, forCommandLine, forName, forName, getAdditionalInformation, getAnnotations, getDefaultName, getDetectedVariables, getErrorHandler, getFlowActors, getFlowExecutionListeningSupporter, getFullName, getName, getNextSibling, getParent, getParentComponent, getPreviousSibling, getRoot, getScopeHandler, getSilent, getSkip, getStopFlowOnError, getStopMessage, getStorageHandler, getVariables, handleError, handleException, hasErrorHandler, hasStopMessage, index, isBackedUp, isExecuted, isExecuting, isFinished, isHeadless, isStopped, nameTipText, performSetUpChecks, performVariableChecks, postExecute, preExecute, pruneBackup, pruneBackup, restoreState, setAnnotations, setErrorHandler, setName, setParent, setSilent, setSkip, setStopFlowOnError, setVariables, shallowCopy, shallowCopy, silentTipText, sizeOf, skipTipText, stopExecution, stopExecution, stopFlowOnErrorTipText, updateDetectedVariables, updatePrefix, updateVariables, variableChanged, wrapUp
      • Methods inherited from class adams.core.option.AbstractOptionHandler

        cleanUpOptions, finishInit, getDefaultLoggingLevel, getOptionManager, loggingLevelTipText, newOptionManager, setLoggingLevel, toCommandLine, toString
      • Methods inherited from class adams.core.logging.LoggingObject

        getLogger, getLoggingLevel, initializeLogging, isLoggingEnabled
      • Methods inherited from interface adams.flow.core.Actor

        cleanUp, compareTo, destroy, equals, execute, findVariables, getAnnotations, getDefaultName, getDetectedVariables, getErrorHandler, getFlowExecutionListeningSupporter, getFullName, getName, getNextSibling, getParent, getParentComponent, getPreviousSibling, getRoot, getScopeHandler, getSilent, getSkip, getStopFlowOnError, getStopMessage, getStorageHandler, getVariables, handleError, hasErrorHandler, hasStopMessage, index, isExecuted, isFinished, isHeadless, isStopped, setAnnotations, setErrorHandler, setName, setParent, setSilent, setSkip, setStopFlowOnError, setVariables, shallowCopy, shallowCopy, sizeOf, stopExecution, stopExecution, toCommandLine, variableChanged, wrapUp
      • Methods inherited from interface adams.core.AdditionalInformationHandler

        getAdditionalInformation
      • Methods inherited from interface adams.core.logging.LoggingLevelHandler

        getLoggingLevel, setLoggingLevel
      • Methods inherited from interface adams.core.logging.LoggingSupporter

        getLogger, isLoggingEnabled
      • Methods inherited from interface adams.core.option.OptionHandler

        cleanUpOptions, getOptionManager
      • Methods inherited from interface adams.core.VariablesInspectionHandler

        canInspectOptions
    • Field Detail

      • m_ScriptFile

        protected adams.core.io.PlaceholderFile m_ScriptFile
        the script.
      • m_InlineScript

        protected JepScript m_InlineScript
        the inline script.
      • m_ExpandVariables

        protected boolean m_ExpandVariables
        whether to expand variables.
      • m_Inputs

        protected adams.flow.control.VariableNameStorageNamePair[] m_Inputs
        the input values.
      • m_Outputs

        protected adams.flow.control.VariableNameStorageNamePair[] m_Outputs
        the output values.
      • m_Forwards

        protected adams.core.base.BaseString[] m_Forwards
        the forwarded values.
      • m_Engine

        protected transient JepEngine m_Engine
        the engine in use.
    • Constructor Detail

      • Jep

        public Jep()
    • Method Detail

      • globalInfo

        public String globalInfo()
        Returns a string describing the object.
        Specified by:
        globalInfo in interface adams.core.GlobalInfoSupporter
        Specified by:
        globalInfo in class adams.core.option.AbstractOptionHandler
        Returns:
        a description suitable for displaying in the gui
      • defineOptions

        public void defineOptions()
        Adds options to the internal list of options.
        Specified by:
        defineOptions in interface adams.core.option.OptionHandler
        Overrides:
        defineOptions in class adams.flow.core.AbstractActor
      • getQuickInfo

        public String getQuickInfo()
        Returns a quick info about the actor, which will be displayed in the GUI.
        Specified by:
        getQuickInfo in interface adams.flow.core.Actor
        Specified by:
        getQuickInfo in interface adams.core.QuickInfoSupporter
        Overrides:
        getQuickInfo in class adams.flow.core.AbstractActor
        Returns:
        null if no info available, otherwise short string
      • setScriptFile

        public void setScriptFile​(adams.core.io.PlaceholderFile value)
        Sets the script file.
        Parameters:
        value - the script
      • getScriptFile

        public adams.core.io.PlaceholderFile getScriptFile()
        Gets the script file.
        Returns:
        the script
      • scriptFileTipText

        public String scriptFileTipText()
        Returns the tip text for this property.
        Returns:
        tip text for this property suitable for displaying in the explorer/experimenter gui
      • getDefaultInlineScript

        protected JepScript getDefaultInlineScript()
        Returns the default inline script.
        Returns:
        the default script
      • setInlineScript

        public void setInlineScript​(JepScript value)
        Sets the inline script to use instead of the external script file.
        Parameters:
        value - the inline script
      • getInlineScript

        public JepScript getInlineScript()
        Gets the inline script to use instead of the external script file.
        Returns:
        the inline script
      • inlineScriptTipText

        public String inlineScriptTipText()
        Returns the tip text for this property.
        Returns:
        tip text for this property suitable for displaying in the explorer/experimenter gui
      • setExpandVariables

        public void setExpandVariables​(boolean value)
        Sets whether to expand ADAMS variables.
        Parameters:
        value - true if to expand
      • getExpandVariables

        public boolean getExpandVariables()
        Returns whether to expand ADAMS variables.
        Returns:
        true if to expand
      • expandVariablesTipText

        public String expandVariablesTipText()
        Returns the tip text for this property.
        Returns:
        tip text for this property suitable for displaying in the explorer/experimenter gui
      • setInputs

        public void setInputs​(adams.flow.control.VariableNameStorageNamePair[] value)
        Sets the input values, i.e., storage items that get added to the interpreter with the specified variable names.
        Parameters:
        value - the input values
      • getInputs

        public adams.flow.control.VariableNameStorageNamePair[] getInputs()
        Gets the input values, i.e., storage items that get added to the interpreter with the specified variable names.
        Returns:
        the input values
      • inputsTipText

        public String inputsTipText()
        Returns the tip text for this property.
        Returns:
        tip text for this property suitable for displaying in the explorer/experimenter gui
      • setOutputs

        public void setOutputs​(adams.flow.control.VariableNameStorageNamePair[] value)
        Sets the output values, i.e., the variables to put back into storage after executing the script.
        Parameters:
        value - the output values
      • getOutputs

        public adams.flow.control.VariableNameStorageNamePair[] getOutputs()
        Gets the output values, i.e., the variables to put back into storage after executing the script.
        Returns:
        the output values
      • outputsTipText

        public String outputsTipText()
        Returns the tip text for this property.
        Returns:
        tip text for this property suitable for displaying in the explorer/experimenter gui
      • setForwards

        public void setForwards​(adams.core.base.BaseString[] value)
        Sets the values to forward, i.e., the variables to forward in the map after executing the script.
        Parameters:
        value - the forwarded values
      • getForwards

        public adams.core.base.BaseString[] getForwards()
        Gets the values to forward, i.e., the variables to forward in the map after executing the script.
        Returns:
        the forwarded values
      • forwardsTipText

        public String forwardsTipText()
        Returns the tip text for this property.
        Returns:
        tip text for this property suitable for displaying in the explorer/experimenter gui
      • generates

        public Class[] generates()
        Returns the class of objects that it generates.
        Returns:
        the Class of the generated tokens
      • setUp

        public String setUp()
        Initializes the item for flow execution.
        Specified by:
        setUp in interface adams.flow.core.Actor
        Overrides:
        setUp in class adams.flow.core.AbstractActor
        Returns:
        null if everything is fine, otherwise error message
      • doExecute

        protected String doExecute()
        Executes the flow item.
        Specified by:
        doExecute in class adams.flow.core.AbstractActor
        Returns:
        null if everything is fine, otherwise error message