Revision 43809 trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/DefaultSymbolTable.java
DefaultSymbolTable.java | ||
---|---|---|
11 | 11 |
|
12 | 12 |
public class DefaultSymbolTable implements MutableSymbolTable { |
13 | 13 |
|
14 |
private SymbolTable symbolTable;
|
|
15 |
private final Map<String,Object> vars;
|
|
16 |
private final Map<String,Function> functions;
|
|
14 |
private SymbolTable delegatedSymbolTable;
|
|
15 |
private Map<String,Object> vars; |
|
16 |
private Map<String,Function> functions; |
|
17 | 17 |
|
18 |
public DefaultSymbolTable(SymbolTable symbolTable) {
|
|
19 |
this.symbolTable = symbolTable;
|
|
18 |
public DefaultSymbolTable(SymbolTable delegatedSymbolTable) {
|
|
19 |
this.delegatedSymbolTable = delegatedSymbolTable;
|
|
20 | 20 |
this.vars = new HashMap<>(); |
21 | 21 |
this.functions = new HashMap<>(); |
22 | 22 |
} |
... | ... | |
24 | 24 |
public DefaultSymbolTable() { |
25 | 25 |
this(null); |
26 | 26 |
} |
27 |
|
|
28 |
@Override |
|
29 |
public MutableSymbolTable clone() throws CloneNotSupportedException { |
|
30 |
DefaultSymbolTable other = (DefaultSymbolTable) super.clone(); |
|
31 |
if( this.delegatedSymbolTable!=null ) { |
|
32 |
other.delegatedSymbolTable = this.delegatedSymbolTable.clone(); |
|
33 |
} |
|
34 |
other.vars = new HashMap<>(vars); |
|
35 |
other.functions = new HashMap<>(functions); |
|
36 |
return other; |
|
37 |
} |
|
27 | 38 |
|
28 | 39 |
@Override |
29 | 40 |
public void addVar(String name, Object value) { |
... | ... | |
38 | 49 |
@Override |
39 | 50 |
public Function function(String name) { |
40 | 51 |
Function fn = this.functions.get(name); |
41 |
if( fn == null && this.symbolTable != null ) {
|
|
42 |
fn = this.symbolTable.function(name);
|
|
52 |
if( fn == null && this.delegatedSymbolTable != null ) {
|
|
53 |
fn = this.delegatedSymbolTable.function(name);
|
|
43 | 54 |
} |
44 | 55 |
return fn; |
45 | 56 |
} |
... | ... | |
48 | 59 |
public boolean exists(String name) { |
49 | 60 |
boolean e = this.vars.containsKey(name); |
50 | 61 |
if( !e ) { |
51 |
e = this.symbolTable.exists(name);
|
|
62 |
e = this.delegatedSymbolTable.exists(name);
|
|
52 | 63 |
} |
53 | 64 |
return e; |
54 | 65 |
} |
... | ... | |
58 | 69 |
if( this.vars.containsKey(name) ) { |
59 | 70 |
return this.vars.get(name); |
60 | 71 |
} |
61 |
return this.symbolTable.value(name);
|
|
72 |
return this.delegatedSymbolTable.value(name);
|
|
62 | 73 |
} |
63 | 74 |
|
64 | 75 |
@Override |
65 | 76 |
public void setSymbolTable(SymbolTable symbolTable) { |
66 |
this.symbolTable = symbolTable;
|
|
77 |
this.delegatedSymbolTable = symbolTable;
|
|
67 | 78 |
} |
68 | 79 |
|
69 | 80 |
@Override |
70 | 81 |
public SymbolTable getSymbolTable() { |
71 |
return this.symbolTable;
|
|
82 |
return this.delegatedSymbolTable;
|
|
72 | 83 |
} |
73 | 84 |
|
74 | 85 |
@Override |
Also available in: Unified diff