Revision 43913 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
4 4
import java.util.HashMap;
5 5
import java.util.Iterator;
6 6
import java.util.Map;
7
import org.gvsig.expressionevaluator.Function;
8 7
import org.gvsig.expressionevaluator.SymbolTable;
9 8
import org.gvsig.expressionevaluator.MutableSymbolTable;
10 9

  
11 10

  
12
public class DefaultSymbolTable implements MutableSymbolTable {
11
public class DefaultSymbolTable extends AbstractSymbolTable implements MutableSymbolTable {
13 12

  
14
    private SymbolTable delegatedSymbolTable;
15 13
    private Map<String,Object> vars;
16
    private Map<String,Function> functions;
17 14
    
18 15
    public DefaultSymbolTable(SymbolTable delegatedSymbolTable) {
19
        this.delegatedSymbolTable = delegatedSymbolTable;
16
        super(delegatedSymbolTable);
20 17
        this.vars = new HashMap<>();
21
        this.functions = new HashMap<>();
22 18
    }
23 19

  
24 20
    public DefaultSymbolTable() {
......
28 24
    @Override
29 25
    public MutableSymbolTable clone() throws CloneNotSupportedException {
30 26
        DefaultSymbolTable other = (DefaultSymbolTable) super.clone();
31
        if( this.delegatedSymbolTable!=null ) {
32
            other.delegatedSymbolTable = this.delegatedSymbolTable.clone();
33
        }
34 27
        other.vars = new HashMap<>(vars);
35
        other.functions = new HashMap<>(functions);
36 28
        return other;
37 29
    }
38 30
    
......
40 32
    public void addVar(String name, Object value) {
41 33
        this.vars.put(name, value);
42 34
    }
43
    
44
    @Override
45
    public void addFunction(Function function) {
46
        this.functions.put(function.name(), function);
47
    }
48
    
49
    @Override
50
    public Function function(String name) {
51
        Function fn = this.functions.get(name);
52
        if( fn == null && this.delegatedSymbolTable != null ) {
53
            fn = this.delegatedSymbolTable.function(name);
54
        }
55
        return fn;
56
    }
57 35

  
58 36
    @Override
59 37
    public boolean exists(String name) {
......
73 51
    }
74 52

  
75 53
    @Override
76
    public void setSymbolTable(SymbolTable symbolTable) {
77
        this.delegatedSymbolTable = symbolTable;
78
    }
79

  
80
    @Override
81
    public SymbolTable getSymbolTable() {
82
        return this.delegatedSymbolTable;
83
    }
84

  
85
    @Override
86 54
    public void removeVar(String name) {
87 55
        this.vars.remove(name);
88 56
    }
89 57

  
90 58
    @Override
91
    public void removeFunction(String name) {
92
        this.functions.remove(name);
93
    }
94

  
95
    @Override
96 59
    public Iterator<String> itervars() {
97 60
        return this.vars.keySet().iterator();
98 61
    }
99

  
100
    @Override
101
    public Iterator<Function> iterfuncs() {
102
        return this.functions.values().iterator();
103
    }
104

  
105
    @Override
106
    public Iterator<Function> iterator() {
107
        return iterfuncs();
108
    }
109 62
    
110 63
}

Also available in: Unified diff