Revision 44181
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/symboltable/ProgrammingSymbolTable.java | ||
---|---|---|
8 | 8 |
import org.gvsig.expressionevaluator.impl.function.programming.ForFunction; |
9 | 9 |
import org.gvsig.expressionevaluator.impl.function.programming.CallStaticMethodFunction; |
10 | 10 |
import org.gvsig.expressionevaluator.impl.function.programming.CreateFnFunction; |
11 |
import org.gvsig.expressionevaluator.impl.function.programming.FileFunction; |
|
11 | 12 |
import org.gvsig.expressionevaluator.impl.function.programming.GetattrFunction; |
12 | 13 |
import org.gvsig.expressionevaluator.impl.function.programming.GetitemFunction; |
14 |
import org.gvsig.expressionevaluator.impl.function.programming.LenFunction; |
|
13 | 15 |
import org.gvsig.expressionevaluator.impl.function.programming.LetFunction; |
14 | 16 |
import org.gvsig.expressionevaluator.impl.function.programming.ListFunction; |
15 | 17 |
import org.gvsig.expressionevaluator.impl.function.programming.PrintFunction; |
16 | 18 |
import org.gvsig.expressionevaluator.impl.function.programming.RangeFunction; |
17 | 19 |
import org.gvsig.expressionevaluator.impl.function.programming.ReturnFunction; |
18 | 20 |
import org.gvsig.expressionevaluator.impl.function.programming.TryFunction; |
21 |
import org.gvsig.expressionevaluator.impl.function.programming.URLFunction; |
|
19 | 22 |
import org.gvsig.expressionevaluator.impl.function.programming.WhileFunction; |
20 | 23 |
import org.gvsig.expressionevaluator.spi.AbstractSymbolTable; |
21 | 24 |
|
... | ... | |
47 | 50 |
this.addFunction(new GetitemFunction()); |
48 | 51 |
this.addFunction(new CallStaticMethodFunction()); |
49 | 52 |
this.addFunction(new CallMethodFunction()); |
53 |
this.addFunction(new FileFunction()); |
|
54 |
this.addFunction(new LenFunction()); |
|
55 |
this.addFunction(new URLFunction()); |
|
50 | 56 |
} |
51 | 57 |
|
52 | 58 |
private void addOperator(Function operator) { |
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/LenFunction.java | ||
---|---|---|
1 |
package org.gvsig.expressionevaluator.impl.function.programming; |
|
2 |
|
|
3 |
import java.util.List; |
|
4 |
import java.util.Map; |
|
5 |
import org.apache.commons.lang3.Range; |
|
6 |
import org.gvsig.expressionevaluator.ExpressionRuntimeException; |
|
7 |
import org.gvsig.expressionevaluator.Function; |
|
8 |
import org.gvsig.expressionevaluator.Interpreter; |
|
9 |
import org.gvsig.expressionevaluator.spi.AbstractFunction; |
|
10 |
import org.gvsig.tools.util.Size; |
|
11 |
import org.gvsig.tools.util.Size64; |
|
12 |
|
|
13 |
public class LenFunction extends AbstractFunction { |
|
14 |
|
|
15 |
public static final String NAME = "LEN"; |
|
16 |
|
|
17 |
public LenFunction() { |
|
18 |
super(Function.GROUP_PROGRAMMING, |
|
19 |
NAME, |
|
20 |
Range.is(1), |
|
21 |
null, |
|
22 |
null, |
|
23 |
null, |
|
24 |
"Object", |
|
25 |
false |
|
26 |
); |
|
27 |
} |
|
28 |
|
|
29 |
@Override |
|
30 |
public boolean allowConstantFolding() { |
|
31 |
return false; |
|
32 |
} |
|
33 |
|
|
34 |
@Override |
|
35 |
public Object call(Interpreter interpreter, Object[] args) throws Exception { |
|
36 |
Object value; |
|
37 |
Object obj = getObject(args, 0); |
|
38 |
if( obj == null ) { |
|
39 |
return 0; |
|
40 |
} |
|
41 |
if( obj instanceof List ) { |
|
42 |
List l = ((List)obj); |
|
43 |
value = l.size(); |
|
44 |
|
|
45 |
} else if( obj instanceof CharSequence ) { |
|
46 |
CharSequence s = (CharSequence)obj; |
|
47 |
value = s.length(); |
|
48 |
|
|
49 |
} else if( obj instanceof Map ) { |
|
50 |
Map m = (Map)obj; |
|
51 |
value = m.size(); |
|
52 |
|
|
53 |
} else if( obj instanceof Size ) { |
|
54 |
Size s = (Size)obj; |
|
55 |
value = s.size(); |
|
56 |
|
|
57 |
} else if( obj instanceof Size64 ) { |
|
58 |
Size64 s = (Size64)obj; |
|
59 |
value = s.size64(); |
|
60 |
|
|
61 |
} else { |
|
62 |
throw new ExpressionRuntimeException("The "+NAME+" function require a String, List, Map or Size and a received a '"+obj.getClass().getSimpleName()+"'."); |
|
63 |
} |
|
64 |
return value; |
|
65 |
} |
|
66 |
|
|
67 |
} |
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/FileFunction.java | ||
---|---|---|
1 |
package org.gvsig.expressionevaluator.impl.function.programming; |
|
2 |
|
|
3 |
import java.io.File; |
|
4 |
import java.net.URI; |
|
5 |
import org.apache.commons.lang3.Range; |
|
6 |
import org.gvsig.expressionevaluator.ExpressionRuntimeException; |
|
7 |
import org.gvsig.expressionevaluator.Function; |
|
8 |
import org.gvsig.expressionevaluator.Interpreter; |
|
9 |
import org.gvsig.expressionevaluator.spi.AbstractFunction; |
|
10 |
|
|
11 |
public class FileFunction extends AbstractFunction { |
|
12 |
|
|
13 |
public static final String NAME = "FILE"; |
|
14 |
|
|
15 |
public FileFunction() { |
|
16 |
super(Function.GROUP_PROGRAMMING, |
|
17 |
NAME, |
|
18 |
Range.is(1), |
|
19 |
null, |
|
20 |
null, |
|
21 |
null, |
|
22 |
"Object", |
|
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 |
Object value; |
|
35 |
Object obj = getObject(args, 0); |
|
36 |
if( obj == null ) { |
|
37 |
return 0; |
|
38 |
} |
|
39 |
if( obj instanceof File ) { |
|
40 |
return obj; |
|
41 |
} else if( obj instanceof CharSequence ) { |
|
42 |
value = new File(((CharSequence)obj).toString()); |
|
43 |
} else if( obj instanceof URI ) { |
|
44 |
value = new File(((URI)obj)); |
|
45 |
} else { |
|
46 |
throw new ExpressionRuntimeException("The "+NAME+" function require a File or a String and a received a '"+obj.getClass().getSimpleName()+"'."); |
|
47 |
} |
|
48 |
return value; |
|
49 |
} |
|
50 |
|
|
51 |
} |
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 | ||
---|---|---|
7 | 7 |
import org.gvsig.expressionevaluator.Function; |
8 | 8 |
import org.gvsig.expressionevaluator.Interpreter; |
9 | 9 |
import org.gvsig.expressionevaluator.spi.AbstractFunction; |
10 |
import org.gvsig.tools.util.GetItem; |
|
11 |
import org.gvsig.tools.util.GetItem64; |
|
10 | 12 |
|
11 | 13 |
public class GetitemFunction extends AbstractFunction { |
12 | 14 |
|
... | ... | |
58 | 60 |
Object index = getObject(args,1); |
59 | 61 |
value = m.get(index); |
60 | 62 |
|
63 |
} else if( obj instanceof GetItem ) { |
|
64 |
GetItem l = (GetItem)obj; |
|
65 |
int index = getInt(args,1); |
|
66 |
value = l.get(index); |
|
67 |
|
|
68 |
} else if( obj instanceof GetItem64 ) { |
|
69 |
GetItem64 l = (GetItem64)obj; |
|
70 |
long index = getLong(args,1); |
|
71 |
value = l.get64(index); |
|
72 |
|
|
61 | 73 |
} else { |
62 | 74 |
throw new ExpressionRuntimeException("The "+NAME+" function require a String, List or Map and a received a '"+obj.getClass().getSimpleName()+"'."); |
63 | 75 |
} |
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/URLFunction.java | ||
---|---|---|
1 |
package org.gvsig.expressionevaluator.impl.function.programming; |
|
2 |
|
|
3 |
import java.io.File; |
|
4 |
import java.net.URI; |
|
5 |
import java.net.URL; |
|
6 |
import org.apache.commons.lang3.Range; |
|
7 |
import org.gvsig.expressionevaluator.ExpressionRuntimeException; |
|
8 |
import org.gvsig.expressionevaluator.Function; |
|
9 |
import org.gvsig.expressionevaluator.Interpreter; |
|
10 |
import org.gvsig.expressionevaluator.spi.AbstractFunction; |
|
11 |
import static org.gvsig.tools.dataTypes.DataTypes.URL; |
|
12 |
|
|
13 |
public class URLFunction extends AbstractFunction { |
|
14 |
|
|
15 |
public static final String NAME = "URL"; |
|
16 |
|
|
17 |
public URLFunction() { |
|
18 |
super(Function.GROUP_PROGRAMMING, |
|
19 |
NAME, |
|
20 |
Range.is(1), |
|
21 |
null, |
|
22 |
null, |
|
23 |
null, |
|
24 |
"Object", |
|
25 |
false |
|
26 |
); |
|
27 |
} |
|
28 |
|
|
29 |
@Override |
|
30 |
public boolean allowConstantFolding() { |
|
31 |
return false; |
|
32 |
} |
|
33 |
|
|
34 |
@Override |
|
35 |
public Object call(Interpreter interpreter, Object[] args) throws Exception { |
|
36 |
Object value; |
|
37 |
Object obj = getObject(args, 0); |
|
38 |
if( obj == null ) { |
|
39 |
return null; |
|
40 |
} |
|
41 |
if( obj instanceof URL ) { |
|
42 |
return obj; |
|
43 |
} else if( obj instanceof CharSequence ) { |
|
44 |
value = new URL(((CharSequence)obj).toString()); |
|
45 |
} else if( obj instanceof File ) { |
|
46 |
value = ((File)obj).toURI().toURL(); |
|
47 |
} else if( obj instanceof URI ) { |
|
48 |
value = ((URI)obj).toURL(); |
|
49 |
} else { |
|
50 |
throw new ExpressionRuntimeException("The "+NAME+" function require a File, URI or a String and a received a '"+obj.getClass().getSimpleName()+"'."); |
|
51 |
} |
|
52 |
return value; |
|
53 |
} |
|
54 |
|
|
55 |
} |
Also available in: Unified diff