Revision 44738 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/CreateFnFunction.java
CreateFnFunction.java | ||
---|---|---|
4 | 4 |
import java.util.ArrayList; |
5 | 5 |
import java.util.Arrays; |
6 | 6 |
import java.util.List; |
7 |
import java.util.Objects; |
|
8 | 7 |
import org.apache.commons.lang3.Range; |
9 | 8 |
import org.apache.commons.lang3.StringUtils; |
10 | 9 |
import org.gvsig.expressionevaluator.Code; |
... | ... | |
39 | 38 |
} |
40 | 39 |
|
41 | 40 |
@Override |
41 |
public boolean isHidden() { |
|
42 |
return true; |
|
43 |
} |
|
44 |
|
|
45 |
@Override |
|
42 | 46 |
public boolean useArgumentsInsteadObjects() { |
43 | 47 |
return true; |
44 | 48 |
} |
... | ... | |
47 | 51 |
public boolean allowConstantFolding() { |
48 | 52 |
return false; |
49 | 53 |
} |
54 |
|
|
55 |
@Override |
|
56 |
public boolean allowArgNames() { |
|
57 |
return true; |
|
58 |
} |
|
50 | 59 |
|
51 | 60 |
@Override |
52 | 61 |
public Object call(Interpreter interpreter, Object[] args) throws Exception { |
... | ... | |
55 | 64 |
|
56 | 65 |
@Override |
57 | 66 |
public Object call(Interpreter interpreter, Codes args) throws Exception { |
58 |
// FNAME, PARAM-NAMES, BODY |
|
59 | 67 |
if( !(interpreter.getSymbolTable() instanceof MutableSymbolTable) ) { |
60 | 68 |
throw new ExpressionRuntimeException("The use of user functions require a mutable symbol table."); |
61 | 69 |
} |
62 | 70 |
MutableSymbolTable symbolTable = (MutableSymbolTable) interpreter.getSymbolTable(); |
63 | 71 |
|
64 |
String name; |
|
65 |
List<String> argNames; |
|
66 |
Code body = null; |
|
67 |
String script_path = null; |
|
68 |
String script_function = null; |
|
69 |
String language = null; |
|
70 |
// name, body |
|
71 |
// name, args, body |
|
72 |
// name, script_name, script_func, lang |
|
73 |
// name, args, script_name, script_func, lang |
|
74 |
switch(args.size()) { |
|
75 |
case 2: |
|
76 |
name = (String) getObject(interpreter, args, 0); |
|
77 |
argNames = null; |
|
78 |
body = args.get(1); |
|
79 |
break; |
|
80 |
case 3: |
|
81 |
name = (String) getObject(interpreter, args, 0); |
|
82 |
if( args.get(1)==null ) { |
|
83 |
argNames = null; |
|
84 |
} else { |
|
85 |
argNames = (List<String>) getObject(interpreter, args, 1); |
|
86 |
} |
|
87 |
body = args.get(2); |
|
88 |
break; |
|
89 |
case 6: |
|
90 |
name = (String) getObject(interpreter, args, 0); |
|
91 |
if( args.get(1)==null ) { |
|
92 |
argNames = null; |
|
93 |
} else { |
|
94 |
argNames = (List<String>) getObject(interpreter, args, 1); |
|
95 |
} |
|
96 |
body = args.get(2); |
|
97 |
script_path = (args.get(3)==null)? null:((String)((Code.Constant)args.get(3)).value()); |
|
98 |
script_function = (args.get(4)==null)? null:((String)((Code.Constant)args.get(4)).value()); |
|
99 |
language = (args.get(5)==null)? null:((String)((Code.Constant)args.get(5)).value()).toLowerCase(); |
|
100 |
break; |
|
101 |
default: |
|
102 |
throw new ExpressionRuntimeException("Incorrect number of arguments"); |
|
103 |
} |
|
72 |
String name = (String) getObject(interpreter, args, "FUNCTION_NAME"); |
|
73 |
List<String> argNames = (List<String>) getObject(interpreter, args, "PARAMETERS"); |
|
74 |
Code body = args.get("BODY"); |
|
75 |
String script_path = (String) getObject(interpreter, args, "SCRIPT_PATH"); |
|
76 |
String script_function = (String) getObject(interpreter, args, "SCRIPT_FUNCTION"); |
|
77 |
String language = (String) getObject(interpreter, args, "LANGUAGE"); |
|
104 | 78 |
Function fn; |
105 | 79 |
if( body!=null ) { |
106 | 80 |
fn = new UserFunction(name, argNames, body); |
... | ... | |
136 | 110 |
this.argNames = argNames; |
137 | 111 |
this.body = body; |
138 | 112 |
} |
139 |
|
|
113 |
|
|
140 | 114 |
@Override |
115 |
public boolean allowArgNames() { |
|
116 |
return true; |
|
117 |
} |
|
118 |
|
|
119 |
@Override |
|
141 | 120 |
public Object call(Interpreter interpreter, Object[] args) throws Exception { |
142 | 121 |
Object value; |
143 | 122 |
ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager(); |
Also available in: Unified diff