Revision 44752 trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/dataaccess/SelectFunction.java
SelectFunction.java | ||
---|---|---|
31 | 31 |
import org.apache.commons.lang3.tuple.ImmutablePair; |
32 | 32 |
import org.apache.commons.lang3.tuple.Pair; |
33 | 33 |
import org.gvsig.expressionevaluator.Code; |
34 |
import org.gvsig.expressionevaluator.Code.Caller; |
|
35 | 34 |
import org.gvsig.expressionevaluator.CodeBuilder; |
36 | 35 |
import org.gvsig.expressionevaluator.Codes; |
37 | 36 |
import static org.gvsig.expressionevaluator.ExpressionBuilder.FUNCTION_GETATTR; |
... | ... | |
56 | 55 |
import org.gvsig.fmap.dal.feature.FeatureStore; |
57 | 56 |
import org.gvsig.fmap.dal.impl.expressionevaluator.DefaultExpressionEvaluator; |
58 | 57 |
import org.gvsig.tools.exception.BaseException; |
58 |
import org.gvsig.expressionevaluator.Code.Callable; |
|
59 | 59 |
|
60 | 60 |
/** |
61 | 61 |
* |
... | ... | |
115 | 115 |
private static final int LIMIT = 5; |
116 | 116 |
|
117 | 117 |
|
118 |
private Caller getTupleOrNull(Codes args, int argn) {
|
|
118 |
private Callable getTupleOrNull(Codes args, int argn) {
|
|
119 | 119 |
Code code = args.get(argn); |
120 | 120 |
if( code.code()==Code.CONSTANT ) { |
121 | 121 |
if( ((Code.Constant)code).value()!=null ) { |
... | ... | |
123 | 123 |
} |
124 | 124 |
return null; |
125 | 125 |
} |
126 |
if( code.code()!=Code.CALLER ) {
|
|
126 |
if( code.code()!=Code.CALLABLE ) {
|
|
127 | 127 |
throw new ExpressionRuntimeException("Tupple or null expected in argument "+argn+ " of function '" + FUNCTION_SELECT + "'."); |
128 | 128 |
} |
129 |
Caller caller = (Caller) code;
|
|
129 |
Callable caller = (Callable) code;
|
|
130 | 130 |
if( !StringUtils.equalsIgnoreCase(FUNCTION_TUPLE, caller.name()) ) { |
131 | 131 |
throw new ExpressionRuntimeException("Tupple or null expected in argument "+argn+ " of function '" + FUNCTION_SELECT + "'."); |
132 | 132 |
} |
... | ... | |
140 | 140 |
Code columns = getTupleOrNull(args, COLUMNS); |
141 | 141 |
Code where = args.get(WHERE); |
142 | 142 |
Number limit = (Number) getObject(interpreter, args, LIMIT); |
143 |
Caller order = getTupleOrNull(args, ORDER);
|
|
144 |
Caller order_mode = getTupleOrNull(args, ORDER_MODE);
|
|
143 |
Callable order = getTupleOrNull(args, ORDER);
|
|
144 |
Callable order_mode = getTupleOrNull(args, ORDER_MODE);
|
|
145 | 145 |
|
146 | 146 |
FeatureQueryOrder queryOrder = null; |
147 | 147 |
if( order!=null || order_mode!=null ) { |
... | ... | |
206 | 206 |
CodeBuilder codeBuilder = ExpressionUtils.createCodeBuilder(); |
207 | 207 |
where.accept((Object o) -> { |
208 | 208 |
Code code = (Code) o; |
209 |
if( code!=null && code.code() == Code.CALLER ) {
|
|
210 |
Code.Caller caller = (Code.Caller) code;
|
|
209 |
if( code!=null && code.code() == Code.CALLABLE ) {
|
|
210 |
Code.Callable caller = (Code.Callable) code;
|
|
211 | 211 |
if( StringUtils.equalsIgnoreCase(caller.name(),FUNCTION_GETATTR) ) { |
212 | 212 |
Codes args = caller.parameters(); |
213 | 213 |
Code arg0 = args.get(0); |
... | ... | |
243 | 243 |
} |
244 | 244 |
|
245 | 245 |
@Override |
246 |
public Code optimize(Optimizer optimizer, Caller caller) {
|
|
246 |
public Code optimize(Optimizer optimizer, Callable caller) {
|
|
247 | 247 |
return caller; // Don't optimize SELECT |
248 | 248 |
} |
249 | 249 |
|
Also available in: Unified diff