Revision 44151

View differences:

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/GetitemFunction.java
6 6
import org.gvsig.expressionevaluator.ExpressionRuntimeException;
7 7
import org.gvsig.expressionevaluator.Function;
8 8
import org.gvsig.expressionevaluator.Interpreter;
9
import org.gvsig.expressionevaluator.MutableSymbolTable;
10
import org.gvsig.expressionevaluator.SymbolTable;
11 9
import org.gvsig.expressionevaluator.spi.AbstractFunction;
12 10

  
13 11
public class GetitemFunction extends AbstractFunction {
......
40 38
        }
41 39
        
42 40
        if( obj instanceof List ) {
41
            List l = ((List)obj);
43 42
            int index = getInt(args,1);
44
            value = ((List)obj).get(index);
43
            if( index<0 ) {
44
                index = l.size() + index;
45
            }
46
            value = l.get(index);
45 47
        
46 48
        } else if( obj instanceof CharSequence ) {
49
            CharSequence s = (CharSequence)obj;
47 50
            int index = getInt(args,1);
48
            value = ((CharSequence)obj).subSequence(index, 0);
51
            if( index<0 ) {
52
                index = s.length() + index;
53
            }
54
            value = s.subSequence(index, index+1);
49 55

  
50 56
        } else if( obj instanceof Map ) {
57
            Map m = (Map)obj;
51 58
            Object index = getObject(args,1);
52
            value = ((Map)obj).get(index);
59
            value = m.get(index);
53 60
            
54 61
        } else {
55 62
            throw new ExpressionRuntimeException("The "+NAME+" function require a String, List or Map and a received a '"+obj.getClass().getSimpleName()+"'.");
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/ListFunction.java
21 21
                "List",
22 22
                false
23 23
        );
24
        this.addAlias("array");
24 25
    }
25 26

  
26 27
    @Override

Also available in: Unified diff