org.sintef.mofscript.runtime
Class ExecutionEnvironment

java.lang.Object
  extended by org.sintef.mofscript.runtime.ExecutionEnvironment
Direct Known Subclasses:
TraceabilityEnvironment

public class ExecutionEnvironment
extends java.lang.Object

Handels the 'memory' during execution. Stores variables, handles file streams etc. Part of the RuleExecutionStack

Author:
Jon Oldevik

Field Summary
protected static long _blockCounter
           
protected  java.io.OutputStream _currentStream
           
protected  boolean _inPrintAction
           
protected static int _lineNumber
           
protected  java.lang.String _objectId
           
protected static java.util.Hashtable _offsets
           
protected static java.lang.String _openFileUri
           
protected  ExecutionEnvironment _parentEnv
           
protected static java.util.Hashtable _printStreams
           
protected static java.util.Hashtable _streamContexts
           
protected static java.util.Hashtable _streams
           
 java.lang.Object _tempObject
           
 java.lang.String _tempRef
           
protected static boolean _traceValue
           
 java.util.Hashtable _variablesRefValues
           
 
Constructor Summary
ExecutionEnvironment()
          Default constructor
 
Method Summary
 void addInputObject(java.lang.String name, java.lang.Object obj)
          Adds an input object
protected  java.io.OutputStream addOutputStream(java.lang.String uri, java.io.OutputStream stream, java.lang.String context)
          Adds an output stream
 void addVariable(VariableDeclaration var)
          adds a variable
 void addVariableInfo(java.lang.String refName, java.lang.String varName, java.lang.Object modelElement, java.lang.String value)
           
 void addVariables(java.util.List variables)
          Adds a list of variables (includes checking for exsistence)
static java.lang.Object assignValue(java.lang.String type, java.lang.Object input, java.lang.Object assignValue, AssignmentOperator operator)
          Returns the assign value
 java.lang.Object assignVariableValue(java.lang.String varName, java.lang.Object value, AssignmentOperator operator, ValueExpression assignedExpression)
          Assignes a value to a variable
 void clean()
          Cleans current streams, streams and calls cleanLocal
protected  void cleanLocal()
          Cleans the environment
static void cleanResources()
           
 void clearInputObject(java.lang.String name)
          Clears an object with a given name
 void clearReferenceCache()
          Clears all cached refrences
 void endUnprotectedBlock()
           
protected  void finalize()
           
 VariableDeclaration findVariable(java.lang.String varName)
          Searches for a given variable name
 java.lang.Object getCachedReference(java.lang.String refName)
          Retrieves an already chached refrence as an object
 java.io.PrintStream getCurrentPrintStream()
           
 java.io.OutputStream getCurrentStream()
           
protected  java.lang.String getCurrentStreamUri()
          Gets the current stream's URI
 org.modelware.modelbus.adapter.frm.FileResourcesType getFileModel()
          Iterats the generated results and populates a EMF File Model (the frm model)
static java.lang.String getIndent()
          Returns the indent string
 java.lang.Object getInputObject(java.lang.String name)
          Gets an input object
 int getIteratorCount()
          The counter for an iterator index in a forEach The counter value is relative to the filter applied
 int getIteratorPosition()
          The "position" of an iterator index in a forEach iterator statement, relative to the full contents of the source of the iterator - i.e. ignoring any filter on the iterator
 int getLineNumber()
          Traceability testing
 java.io.OutputStream getOutputStream(java.lang.String uri)
          Gets the output stream from the environment, if null returns the parent environment's output stream
protected  java.io.OutputStream getOutputStreamForContext(java.lang.String context)
          Gets an output stream for a given context
 ExecutionEnvironment getParentEnvironment()
          Gets the execution environment's parent environment
protected  java.io.PrintStream getPrintStreamForContext(java.lang.String context)
           
static java.util.Vector getResources()
           
 boolean getUseFileModel()
          The value of useFileModel defines if a file model is used rather than physical files
 boolean getUseLog()
           
 VariableDeclaration getVariable(java.lang.String varName)
          Fetches a variable by name
 org.eclipse.emf.ecore.EObject getVariableEObject(java.lang.String key)
          Gets the EObject that the variable is refering
 java.lang.Object getVariableImplementation(java.lang.String varName)
          Retrurns the implementation of a variable If the variable implementation has not been instantiatied, this is done here.
 java.lang.Object getVariableInfo(java.lang.String key)
          Retrieves the variable information object TraceVariableInfo.
 java.lang.String getVariableRefName(java.lang.String key)
          Gets the ref name E.g self.name
 java.lang.String getVariableValue(java.lang.String key)
          Gets the value of self. ... e.g.
 void increaseIteratorCount()
          Increases iterator counter
 void increaseIteratorPosition()
          Increase position counter
static void increaseLineNumber(java.lang.String s)
          Traceability testing Handels line number in file
static void indent()
          Increases the indentation for printing
 void initIteratorCounters()
          Resets itarator counters
 boolean isInPrintAction()
           
 boolean isUnprotectedBlock()
          Checks if a block is unprotected
 void log(java.lang.String s)
          Logs the string with date
 void notifyMessage(java.lang.String msg)
          notifies about some events....
 void print(java.lang.String s, boolean println)
          Prints a string to the correct context
 void println(java.lang.String s)
           
 void removeVariable(VariableDeclaration var)
          Removes a given VariableDeclaration from the collection
 void removeVariableInfo(java.lang.String varName)
           
static void resetBlockCounter()
           
 void setCachedReference(java.lang.String refname, java.lang.Object value)
          Puts a refrence into the cache
 void setCurrentStream(java.lang.String contextReference)
          Set the current stream
 void setCurrentStream(java.lang.String uri, java.lang.String context)
          Creates a new file and stream
 void setInPrintAction(boolean inPrintAction)
          /* TODO Trace testing: remove public String getInputObjectKey(Object o){ Iterator i = _inputobjects.values().iterator(); while(i.hasNext()){ if(i.next().equals(o)){ } } return "a"; } /** TraceEnv 150, 152
 void setOwnerStack(RuleExecutionStack stack)
          Sets the owner stack
 void setParentEnvironment(ExecutionEnvironment parent)
          Sets the parent environment
static void setPrintContext(java.lang.String context)
          Sets the print context
 void setRootDirectory(java.lang.String rootDir)
          Defines the root directory for file generation
static void setTrace(boolean tV)
          Traceability testing Set if print statement and not stdout
 void setTypeForVariable(VariableDeclaration varDecl, java.lang.Object varValue)
          Sets the type of a variable
 void setUnprotectedBlock(boolean unprotected)
           
 void setUseFileModel(boolean useModel)
          Defines if a file model shall be used rather than writing to physical files.
 void setUseLog(boolean useLog)
          Defines the execution should use a system log or not.
 void setUseParentCache(boolean useParentCache)
          Sets if the parent cache is to be used
 void setVariable(java.lang.String varName, VariableDeclaration val)
          Puts the variable into the _variables Hashtable
 boolean setVariableInfo(java.lang.String refName, java.lang.String varName, java.lang.Object modelElement, java.lang.String value)
          Inserts a variable that should be traced into the Hashtable _variablesRefValues
 void startUnprotectedBlock(java.lang.String objectUri)
           
 void storeFiles()
           
static void undent()
          Decreases the indentation for printing
static boolean useIndent()
          Whether indenting is used or not
 
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

_streams

protected static java.util.Hashtable _streams

_printStreams

protected static java.util.Hashtable _printStreams

_streamContexts

protected static java.util.Hashtable _streamContexts

_parentEnv

protected ExecutionEnvironment _parentEnv

_currentStream

protected java.io.OutputStream _currentStream

_lineNumber

protected static int _lineNumber

_offsets

protected static java.util.Hashtable _offsets

_traceValue

protected static boolean _traceValue

_inPrintAction

protected boolean _inPrintAction

_openFileUri

protected static java.lang.String _openFileUri

_blockCounter

protected static long _blockCounter

_objectId

protected java.lang.String _objectId

_tempObject

public java.lang.Object _tempObject

_tempRef

public java.lang.String _tempRef

_variablesRefValues

public java.util.Hashtable _variablesRefValues
Constructor Detail

ExecutionEnvironment

public ExecutionEnvironment()
Default constructor

Method Detail

setUseFileModel

public void setUseFileModel(boolean useModel)
Defines if a file model shall be used rather than writing to physical files.

Parameters:
useModel -

getUseFileModel

public boolean getUseFileModel()
The value of useFileModel defines if a file model is used rather than physical files

Returns:
boolean value

setUseLog

public void setUseLog(boolean useLog)
Defines the execution should use a system log or not.

Parameters:
useLog -

getUseLog

public boolean getUseLog()
Returns:
true if execution is set to use log

getFileModel

public org.modelware.modelbus.adapter.frm.FileResourcesType getFileModel()
Iterats the generated results and populates a EMF File Model (the frm model)

Returns:
the file model

setRootDirectory

public void setRootDirectory(java.lang.String rootDir)
Defines the root directory for file generation

Parameters:
rootDir -

indent

public static void indent()
Increases the indentation for printing


undent

public static void undent()
Decreases the indentation for printing


getIndent

public static java.lang.String getIndent()
Returns the indent string

Returns:

useIndent

public static boolean useIndent()
Whether indenting is used or not

Returns:
true if indent is used

getVariable

public VariableDeclaration getVariable(java.lang.String varName)
Fetches a variable by name

Parameters:
varName -
Returns:
variable or null

notifyMessage

public void notifyMessage(java.lang.String msg)
notifies about some events....

Parameters:
msg -

getIteratorCount

public int getIteratorCount()
The counter for an iterator index in a forEach The counter value is relative to the filter applied

Returns:

getIteratorPosition

public int getIteratorPosition()
The "position" of an iterator index in a forEach iterator statement, relative to the full contents of the source of the iterator - i.e. ignoring any filter on the iterator

Returns:

initIteratorCounters

public void initIteratorCounters()
Resets itarator counters


increaseIteratorCount

public void increaseIteratorCount()
Increases iterator counter


increaseIteratorPosition

public void increaseIteratorPosition()
Increase position counter


getVariableImplementation

public java.lang.Object getVariableImplementation(java.lang.String varName)
Retrurns the implementation of a variable If the variable implementation has not been instantiatied, this is done here.

Parameters:
varName -
Returns:

setTypeForVariable

public void setTypeForVariable(VariableDeclaration varDecl,
                               java.lang.Object varValue)
Sets the type of a variable

Parameters:
varDecl -
varValue -

assignVariableValue

public java.lang.Object assignVariableValue(java.lang.String varName,
                                            java.lang.Object value,
                                            AssignmentOperator operator,
                                            ValueExpression assignedExpression)
Assignes a value to a variable

Parameters:
varName -
value -

assignValue

public static java.lang.Object assignValue(java.lang.String type,
                                           java.lang.Object input,
                                           java.lang.Object assignValue,
                                           AssignmentOperator operator)
Returns the assign value

Parameters:
input -
assignValue -
operator -
Returns:

setVariable

public void setVariable(java.lang.String varName,
                        VariableDeclaration val)
Puts the variable into the _variables Hashtable

Parameters:
varName -
val -

findVariable

public VariableDeclaration findVariable(java.lang.String varName)
Searches for a given variable name

Parameters:
varName -
Returns:
a variable declaration if foun, else NULL

getParentEnvironment

public ExecutionEnvironment getParentEnvironment()
Gets the execution environment's parent environment

Returns:
the parent environment

setParentEnvironment

public void setParentEnvironment(ExecutionEnvironment parent)
Sets the parent environment

Parameters:
parent -

setOwnerStack

public void setOwnerStack(RuleExecutionStack stack)
Sets the owner stack

Parameters:
stack -

addVariables

public void addVariables(java.util.List variables)
Adds a list of variables (includes checking for exsistence)

Parameters:
variables -

addVariable

public void addVariable(VariableDeclaration var)
adds a variable

Parameters:
var -

removeVariable

public void removeVariable(VariableDeclaration var)
Removes a given VariableDeclaration from the collection

Parameters:
var -

getInputObject

public java.lang.Object getInputObject(java.lang.String name)
Gets an input object

Parameters:
name -
Returns:

addInputObject

public void addInputObject(java.lang.String name,
                           java.lang.Object obj)
Adds an input object

Parameters:
name -
obj -

clearInputObject

public void clearInputObject(java.lang.String name)
Clears an object with a given name

Parameters:
name -

setUseParentCache

public void setUseParentCache(boolean useParentCache)
Sets if the parent cache is to be used

Parameters:
useParentCache -

getCachedReference

public java.lang.Object getCachedReference(java.lang.String refName)
Retrieves an already chached refrence as an object

Parameters:
refName -
Returns:
a refrence with the given name

setCachedReference

public void setCachedReference(java.lang.String refname,
                               java.lang.Object value)
Puts a refrence into the cache

Parameters:
refname -
value -

clearReferenceCache

public void clearReferenceCache()
Clears all cached refrences


addOutputStream

protected java.io.OutputStream addOutputStream(java.lang.String uri,
                                               java.io.OutputStream stream,
                                               java.lang.String context)
Adds an output stream

Parameters:
uri -
stream -
context -
Returns:
An output stream

getOutputStreamForContext

protected java.io.OutputStream getOutputStreamForContext(java.lang.String context)
Gets an output stream for a given context

Parameters:
context -
Returns:
An output stream or NULL

getPrintStreamForContext

protected java.io.PrintStream getPrintStreamForContext(java.lang.String context)

getOutputStream

public java.io.OutputStream getOutputStream(java.lang.String uri)
Gets the output stream from the environment, if null returns the parent environment's output stream

Parameters:
uri -
Returns:
An output stream or NULL

setCurrentStream

public void setCurrentStream(java.lang.String uri,
                             java.lang.String context)
Creates a new file and stream

Parameters:
uri -
context -

setCurrentStream

public void setCurrentStream(java.lang.String contextReference)
Set the current stream

Parameters:
contextReference -

getCurrentStream

public java.io.OutputStream getCurrentStream()
Returns:
The current stream

getCurrentPrintStream

public java.io.PrintStream getCurrentPrintStream()

getCurrentStreamUri

protected java.lang.String getCurrentStreamUri()
Gets the current stream's URI

Returns:
String containing URI or NULL

storeFiles

public void storeFiles()

clean

public void clean()
Cleans current streams, streams and calls cleanLocal


cleanLocal

protected void cleanLocal()
Cleans the environment


setPrintContext

public static void setPrintContext(java.lang.String context)
Sets the print context

Parameters:
context -

print

public void print(java.lang.String s,
                  boolean println)
Prints a string to the correct context

Parameters:
s -
println -

log

public void log(java.lang.String s)
Logs the string with date

Parameters:
s -

println

public void println(java.lang.String s)

getResources

public static java.util.Vector getResources()
Returns:
A (String) list of produced resources (files) (their names)

cleanResources

public static void cleanResources()

finalize

protected void finalize()
                 throws java.lang.Throwable
Overrides:
finalize in class java.lang.Object
Throws:
java.lang.Throwable

setInPrintAction

public void setInPrintAction(boolean inPrintAction)
/* TODO Trace testing: remove public String getInputObjectKey(Object o){ Iterator i = _inputobjects.values().iterator(); while(i.hasNext()){ if(i.next().equals(o)){ } } return "a"; } /** TraceEnv 150, 152


isInPrintAction

public boolean isInPrintAction()

setTrace

public static void setTrace(boolean tV)
Traceability testing Set if print statement and not stdout

Parameters:
tV -

increaseLineNumber

public static void increaseLineNumber(java.lang.String s)
Traceability testing Handels line number in file

Parameters:
s - TODO TRACE rewrite

getLineNumber

public int getLineNumber()
Traceability testing

Returns:

resetBlockCounter

public static void resetBlockCounter()

startUnprotectedBlock

public void startUnprotectedBlock(java.lang.String objectUri)
Parameters:
objectUri -

endUnprotectedBlock

public void endUnprotectedBlock()

isUnprotectedBlock

public boolean isUnprotectedBlock()
Checks if a block is unprotected

Returns:
(true or false) the value of the variable _unprotectedBlock

setUnprotectedBlock

public void setUnprotectedBlock(boolean unprotected)

setVariableInfo

public boolean setVariableInfo(java.lang.String refName,
                               java.lang.String varName,
                               java.lang.Object modelElement,
                               java.lang.String value)
Inserts a variable that should be traced into the Hashtable _variablesRefValues

Parameters:
refName -
varName -
modelElement -

addVariableInfo

public void addVariableInfo(java.lang.String refName,
                            java.lang.String varName,
                            java.lang.Object modelElement,
                            java.lang.String value)

removeVariableInfo

public void removeVariableInfo(java.lang.String varName)

getVariableInfo

public java.lang.Object getVariableInfo(java.lang.String key)
Retrieves the variable information object TraceVariableInfo.

Parameters:
key - The name of the variable
Returns:
The variable information needed for traceability

getVariableEObject

public org.eclipse.emf.ecore.EObject getVariableEObject(java.lang.String key)
Gets the EObject that the variable is refering

Parameters:
key - The name of the variable
Returns:

getVariableRefName

public java.lang.String getVariableRefName(java.lang.String key)
Gets the ref name E.g self.name

Parameters:
key - The name of the variable
Returns:

getVariableValue

public java.lang.String getVariableValue(java.lang.String key)
Gets the value of self. ... e.g. "MyClassName"

Parameters:
key - The name of the variable
Returns: