Package com.singularsys.jep
Class VariableTable
- java.lang.Object
-
- java.util.Observable
-
- com.singularsys.jep.VariableTable
-
- All Implemented Interfaces:
JepComponent
,java.io.Serializable
- Direct Known Subclasses:
CaseInsensitiveVariableTable
,RealVariableTable
,StandardVariableTable
,XVariableTable
public class VariableTable extends java.util.Observable implements JepComponent
A table of variables. This class implements Observable and observers will be notified when new variables are added, or removed, but not when their values are changed. UseVariable.addObserver()
to monitor individual variables.
-
-
Field Summary
Fields Modifier and Type Field Description protected java.util.HashMap<java.lang.String,Variable>
table
protected VariableFactory
vf
-
Constructor Summary
Constructors Constructor Description VariableTable()
VariableTable(VariableTable tbl)
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description Variable
addConstant(java.lang.String name, java.lang.Object value)
Adds a new variable which is marked as a constant.Variable
addVariable(java.lang.String name)
Adds a new variable with no value specified.Variable
addVariable(java.lang.String name, java.lang.Object value)
Adds a new variable with specified value.void
clear()
Clears all variables from the table.void
clearValues()
Clears the values of all non constant variables.boolean
containsKey(java.lang.String key)
boolean
containsVariable(Variable value)
void
copyConstantsFrom(VariableTable vt)
Copies all the constants from a variable table into this table.void
copyVariablesFrom(VariableTable vt)
Copies all the variables from a variable table into this table Copies all properties of the variable, including isConstant, validValue flags and all hook keys.JepComponent
getLightWeightInstance()
Returns a new empty VariableTable.Variable
getVariable(java.lang.String name)
Gets an existing variable, returns null if variable is not found.VariableFactory
getVariableFactory()
java.util.Collection<Variable>
getVariables()
Returns a list of all the variables in the table.void
init(Jep j)
Initialize the component.boolean
isEmpty()
java.util.Set<java.lang.String>
keySet()
Returns the names of all the variables.Variable
remove(Variable var)
Remove a variable from the table.Variable
remove(java.lang.String varname)
Remove a variable with a given name from the table.void
removeNonConstants()
Remove all variables from the table which are not constants.void
setVariableFactory(VariableFactory vf)
int
size()
java.lang.String
toString()
java.util.Collection<Variable>
values()
Deprecated.
-
-
-
Field Detail
-
table
protected java.util.HashMap<java.lang.String,Variable> table
-
vf
protected transient VariableFactory vf
-
-
Constructor Detail
-
VariableTable
public VariableTable()
-
VariableTable
public VariableTable(VariableTable tbl)
-
-
Method Detail
-
init
public void init(Jep j)
Description copied from interface:JepComponent
Initialize the component. This methods is called whenever a component is added to Jep. Hence it allows components to keep track of the other components they may rely on.- Specified by:
init
in interfaceJepComponent
- Parameters:
j
- the current Jep instance
-
setVariableFactory
public void setVariableFactory(VariableFactory vf)
-
getVariableFactory
public VariableFactory getVariableFactory()
-
addVariable
public Variable addVariable(java.lang.String name)
Adds a new variable with no value specified. If the variable already exists in the table, that variable instance is returned. Otherwise a newVariable
instance is created with the variable factory.- Parameters:
name
- the variable's name- Returns:
- the variable
-
addVariable
public Variable addVariable(java.lang.String name, java.lang.Object value) throws JepException
Adds a new variable with specified value. If the variable already exists, its value is updated with the new value. If the variable exists and is a constant, the value is not updated and no error is reported. If the variable does not exist, it is created using the variable factory of the jep instance specified with the init(Jep j) method.- Parameters:
name
- the name of the variablevalue
- the value for the variable to be set to- Returns:
- the variable added or updated
- Throws:
JepException
- if an attempt is made to set the value of a constant variable
-
addConstant
public Variable addConstant(java.lang.String name, java.lang.Object value) throws JepException
Adds a new variable which is marked as a constant. Its value will also be marked as valid, in particular a null value is valid for a constant.- Parameters:
name
-value
-- Returns:
- the corresponding Variable object
- Throws:
JepException
- if an attempt is made to set the value of an existing constant variable
-
getVariable
public Variable getVariable(java.lang.String name)
Gets an existing variable, returns null if variable is not found.- Parameters:
name
-- Returns:
- the variable
-
clear
public void clear()
Clears all variables from the table.
-
isEmpty
public boolean isEmpty()
-
keySet
public java.util.Set<java.lang.String> keySet()
Returns the names of all the variables.- Returns:
- a collection Strings with the variable names.
-
getVariables
public java.util.Collection<Variable> getVariables()
Returns a list of all the variables in the table. Just returns a view. Does not do a deep copy so changes to this collection will affect the underlying table.
-
remove
public Variable remove(java.lang.String varname)
Remove a variable with a given name from the table.- Parameters:
varname
- name of the variable to remove- Returns:
- the removed variable or null if the variable does not exist in the table.
-
remove
public Variable remove(Variable var)
Remove a variable from the table.- Parameters:
var
- the variable to remove- Returns:
- the removed variable or null if the variable does not exist in the table.
-
values
@Deprecated public java.util.Collection<Variable> values()
Deprecated.A collection of all the variables. Replace withgetVariables()
-
size
public int size()
-
containsKey
public boolean containsKey(java.lang.String key)
-
containsVariable
public boolean containsVariable(Variable value)
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
getLightWeightInstance
public JepComponent getLightWeightInstance()
Returns a new empty VariableTable.- Specified by:
getLightWeightInstance
in interfaceJepComponent
- Returns:
- a new VariableTable
- See Also:
copyConstantsFrom(VariableTable)
,copyVariablesFrom(VariableTable)
-
copyConstantsFrom
public void copyConstantsFrom(VariableTable vt)
Copies all the constants from a variable table into this table. Copies all properties of the variable, including isConstant, validValue flags and all hook keys. If there already is a variable with the same name all properties are copied and pre-existing hooks deleted.- Parameters:
vt
- source variable table
-
copyVariablesFrom
public void copyVariablesFrom(VariableTable vt)
Copies all the variables from a variable table into this table Copies all properties of the variable, including isConstant, validValue flags and all hook keys. If there already is a variable with the same name all properties are copied and pre-existing hooks deleted.- Parameters:
vt
- source variable table
-
clearValues
public void clearValues()
Clears the values of all non constant variables. This will set theVariable.setValidValue(boolean)
to false.- Since:
- 3.4.0
-
removeNonConstants
public void removeNonConstants()
Remove all variables from the table which are not constants.- Since:
- 3.5
-
-