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

View differences:

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