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 / MapFunction.java @ 45025

History | View | Annotate | Download (1.39 KB)

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

    
3
import java.util.ArrayList;
4
import java.util.List;
5
import org.apache.commons.lang3.Range;
6
import org.gvsig.expressionevaluator.Function;
7
import org.gvsig.expressionevaluator.Interpreter;
8
import org.gvsig.expressionevaluator.spi.AbstractFunction;
9
import static org.gvsig.expressionevaluator.ExpressionBuilder.FUNCTION_MAP;
10
import org.gvsig.tools.util.GetItemWithSize;
11
import org.gvsig.tools.util.GetItemWithSize64;
12

    
13
public class MapFunction extends AbstractFunction {
14
    
15
    public MapFunction() {
16
        super(Function.GROUP_PROGRAMMING, 
17
                FUNCTION_MAP, 
18
                Range.is(2),
19
                null,
20
                FUNCTION_MAP+"({{function}}, list)",
21
                null,
22
                "List",
23
                false
24
        );
25
    }
26

    
27
    @Override
28
    public boolean allowConstantFolding() {
29
        return false;
30
    }
31
    
32
    @Override
33
    public Object call(Interpreter interpreter, Object[] args) throws Exception {
34
        GetItemWithSize64 list_in = this.getList(args, 1);
35
        List<Object> list_out = new ArrayList<>(); 
36
        Function func = (Function) this.getObject(args, 0);
37
        for (long i = 0; i < list_in.size64(); i++) {
38
            Object obj = list_in.get64(i);
39
            Object v = func.call(interpreter, new Object[] { obj });
40
            list_out.add(v);
41
        }
42
        return list_out;
43
    }
44

    
45
}