Revision 44340 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/SimpleScript.java

View differences:

SimpleScript.java
1 1
package org.gvsig.expressionevaluator.impl;
2 2

  
3
import java.net.URI;
3
import java.net.URL;
4
import java.util.ArrayList;
5
import java.util.Collection;
6
import java.util.List;
4 7
import org.gvsig.expressionevaluator.Code;
5 8
import org.gvsig.expressionevaluator.ExpressionEvaluatorLocator;
6 9
import org.gvsig.expressionevaluator.ExpressionEvaluatorManager;
7 10
import org.gvsig.expressionevaluator.ExpressionRuntimeException;
11
import org.gvsig.expressionevaluator.Function;
12
import org.gvsig.expressionevaluator.SymbolTable;
8 13
import org.gvsig.tools.script.Script;
9 14

  
10 15
/**
......
16 21
    private final String name;
17 22
    private String source;
18 23
    private DefaultInterpreter interpreter;
24
    private List<String> names;
19 25

  
20 26
    public SimpleScript(String name, String source) {
21 27
        this.name = name;
......
38 44
    }
39 45

  
40 46
    @Override
41
    public URI getURI() {
47
    public URL getURL() {
42 48
        return null;
43 49
    }
44 50

  
......
63 69
    @Override
64 70
    public final void setCode(String source) {
65 71
        this.source = source;
72
        this.names  = null;
66 73
        ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager();
67 74
        this.interpreter = new DefaultInterpreter();
68 75
        Code code = manager.compile(source);
69 76
        this.interpreter.run(code);
70 77
    }
78

  
79
    @Override
80
    public List<String> getNames() {
81
        if( this.names == null ) {
82
            List<String> theNames = new ArrayList<>();
83
            SymbolTable symbolTable = this.interpreter.getSymbolTable();
84
            Collection<Function> funcs = symbolTable.localfunctions();
85
            if( funcs!=null ) {
86
                for (Function function : funcs) {
87
                    theNames.add(function.name());
88
                }
89
            }
90
            Collection<String> vars = symbolTable.localvariables();
91
            if( vars!=null ) {
92
                for (String var : vars) {
93
                    theNames.add(var);
94
                }
95
            }
96
            this.names = theNames;
97
        }
98
        return this.names;
99
    }
71 100
    
101
    
72 102
}

Also available in: Unified diff