Statistics
| Revision:

svn-gvsig-desktop / 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 / function / programming / ImportFunction.java @ 47077

History | View | Annotate | Download (1.99 KB)

1
package org.gvsig.expressionevaluator.impl.function.programming;
2

    
3
import org.apache.commons.lang3.Range;
4
import org.gvsig.expressionevaluator.ExpressionBuilder;
5
import org.gvsig.expressionevaluator.ExpressionEvaluatorLocator;
6
import org.gvsig.expressionevaluator.ExpressionEvaluatorManager;
7
import org.gvsig.expressionevaluator.Function;
8
import org.gvsig.expressionevaluator.Interpreter;
9
import org.gvsig.expressionevaluator.MutableSymbolTable;
10
import org.gvsig.expressionevaluator.SymbolTable;
11
import org.gvsig.expressionevaluator.spi.AbstractFunction;
12
import org.gvsig.tools.script.Script;
13

    
14
public class ImportFunction extends AbstractFunction {
15
    public static final String FUNCTION_IMPORT = "IMPORT";
16
    
17
    public ImportFunction() {
18
        super(Function.GROUP_PROGRAMMING, 
19
            FUNCTION_IMPORT, 
20
            Range.is(1),
21
            "Import a module from the current resources storage",
22
            FUNCTION_IMPORT+" {{module}}",
23
            new String[]{
24
                "module - Module name to import"
25
            },
26
            "Script",
27
            false
28
        );
29
    }
30
    
31
    @Override
32
    public boolean allowConstantFolding() {
33
        return false;
34
    }
35
    
36
    @Override
37
    public Object call(Interpreter interpreter, Object[] args) throws Exception {
38
        String name = getStr(args,0);
39
        if( name == null ) {
40
            throw new NullPointerException("A string with a module name was expected and a null was received");
41
        }
42
        SymbolTable symbolTable = interpreter.getSymbolTable();
43
        if( symbolTable instanceof MutableSymbolTable ) {
44
            ExpressionEvaluatorManager expressionManager = ExpressionEvaluatorLocator.getExpressionEvaluatorManager();
45
            Script module = expressionManager.loadScript(interpreter.getResourcesStorage(), name);
46
            if( module == null ) {
47
                return null;
48
            }
49
            ((MutableSymbolTable)symbolTable).setVar(name, module);
50
            return module;
51
        } 
52
        return null;
53
    }
54
    
55
}