first commit
This commit is contained in:
97
hrmsEjb/org/nfunk/jep/SymbolTable.java
Normal file
97
hrmsEjb/org/nfunk/jep/SymbolTable.java
Normal file
@@ -0,0 +1,97 @@
|
||||
package org.nfunk.jep;
|
||||
|
||||
import java.util.Enumeration;
|
||||
import java.util.Hashtable;
|
||||
|
||||
public class SymbolTable extends Hashtable {
|
||||
protected VariableFactory vf;
|
||||
|
||||
public SymbolTable(VariableFactory paramVariableFactory) {
|
||||
this.vf = paramVariableFactory;
|
||||
}
|
||||
|
||||
private SymbolTable() {}
|
||||
|
||||
public Object get(Object paramObject) {
|
||||
return getValue(paramObject);
|
||||
}
|
||||
|
||||
public Object getValue(Object paramObject) {
|
||||
Variable variable = super.get(paramObject);
|
||||
return (variable == null) ? null : variable.getValue();
|
||||
}
|
||||
|
||||
public Variable getVar(String paramString) {
|
||||
return super.get(paramString);
|
||||
}
|
||||
|
||||
public Object put(Object paramObject1, Object paramObject2) {
|
||||
return makeVarIfNeeded((String)paramObject1, paramObject2);
|
||||
}
|
||||
|
||||
public boolean setVarValue(String paramString, Object paramObject) {
|
||||
Variable variable = super.get(paramString);
|
||||
return (variable != null) ? variable.setValue(paramObject) : false;
|
||||
}
|
||||
|
||||
public Variable addVariable(String paramString, Object paramObject) {
|
||||
Variable variable = super.get(paramString);
|
||||
if (variable != null)
|
||||
return null;
|
||||
variable = this.vf.createVariable(paramString, paramObject);
|
||||
super.put(paramString, variable);
|
||||
variable.setValidValue(true);
|
||||
return variable;
|
||||
}
|
||||
|
||||
public Variable addConstant(String paramString, Object paramObject) {
|
||||
Variable variable = addVariable(paramString, paramObject);
|
||||
if (variable != null)
|
||||
variable.setIsConstant(true);
|
||||
return variable;
|
||||
}
|
||||
|
||||
public Variable makeVarIfNeeded(String paramString, Object paramObject) {
|
||||
Variable variable = super.get(paramString);
|
||||
if (variable != null) {
|
||||
variable.setValue(paramObject);
|
||||
return variable;
|
||||
}
|
||||
variable = this.vf.createVariable(paramString, paramObject);
|
||||
super.put(paramString, variable);
|
||||
return variable;
|
||||
}
|
||||
|
||||
public Variable makeVarIfNeeded(String paramString) {
|
||||
Variable variable = super.get(paramString);
|
||||
if (variable != null)
|
||||
return variable;
|
||||
variable = this.vf.createVariable(paramString, null);
|
||||
super.put(paramString, variable);
|
||||
return variable;
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
StringBuffer stringBuffer = new StringBuffer();
|
||||
Enumeration enumeration = elements();
|
||||
while (enumeration.hasMoreElements()) {
|
||||
Variable variable = (Variable)enumeration.nextElement();
|
||||
stringBuffer.append(variable.toString());
|
||||
stringBuffer.append("\n");
|
||||
}
|
||||
return stringBuffer.toString();
|
||||
}
|
||||
|
||||
public void clearValues() {
|
||||
Enumeration enumeration = elements();
|
||||
while (enumeration.hasMoreElements()) {
|
||||
Variable variable = (Variable)enumeration.nextElement();
|
||||
if (!variable.isConstant())
|
||||
variable.setValidValue(false);
|
||||
}
|
||||
}
|
||||
|
||||
public VariableFactory getVariableFactory() {
|
||||
return this.vf;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user