Revision 46993
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/SelectCountFunction.java | ||
---|---|---|
113 | 113 |
set = featureStore.getFeatureSet(); |
114 | 114 |
} else { |
115 | 115 |
FeatureQuery query = featureStore.createFeatureQuery(); |
116 |
Code where2 = removeOuterTablesReferences(interpreter, where); |
|
116 |
Code where2 = removeOuterTablesReferences(interpreter, where, featureStore.getDefaultFeatureTypeQuietly());
|
|
117 | 117 |
ExpressionEvaluator filter = new DefaultFeatureExpressionEvaluator(where2.toString()); |
118 | 118 |
filter.toSymbolTable().addSymbolTable(interpreter.getSymbolTable()); |
119 | 119 |
query.addFilter(filter); |
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/AbstractSelectFunction.java | ||
---|---|---|
26 | 26 |
import static org.gvsig.fmap.dal.expressionevaluator.FeatureSymbolTable.SYMBOL_CURRENT_TABLE; |
27 | 27 |
import org.gvsig.fmap.dal.expressionevaluator.TableAttributeHandler; |
28 | 28 |
import org.gvsig.fmap.dal.feature.FeatureStore; |
29 |
import org.gvsig.fmap.dal.feature.FeatureType; |
|
29 | 30 |
|
30 | 31 |
/** |
31 | 32 |
* |
... | ... | |
83 | 84 |
return caller; |
84 | 85 |
} |
85 | 86 |
|
86 |
protected Code removeOuterTablesReferences(Interpreter interpreter, Code where) { |
|
87 |
protected Code removeOuterTablesReferences(Interpreter interpreter, Code where, FeatureType currentType) {
|
|
87 | 88 |
try { |
88 | 89 |
SymbolTable symbolTable = interpreter.getSymbolTable(); |
89 | 90 |
TableAttributeHandler table = (TableAttributeHandler) symbolTable.value(SYMBOL_CURRENT_TABLE); |
... | ... | |
135 | 136 |
switch (code.code()) { |
136 | 137 |
case Code.IDENTIFIER: |
137 | 138 |
Code.Identifier id = (Code.Identifier) code; |
138 |
if (symbolTable.exists(id.name())) { |
|
139 |
if (currentType.getAttributeDescriptor(id.name()) == null && symbolTable.exists(id.name())) {
|
|
139 | 140 |
Object value = symbolTable.value(id.name()); |
140 | 141 |
replaces.add( |
141 | 142 |
new ImmutablePair<>( |
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 | ||
---|---|---|
29 | 29 |
import org.gvsig.expressionevaluator.Code; |
30 | 30 |
import org.gvsig.expressionevaluator.Code.Callable; |
31 | 31 |
import org.gvsig.expressionevaluator.Codes; |
32 |
import org.gvsig.expressionevaluator.Expression; |
|
32 | 33 |
import org.gvsig.expressionevaluator.ExpressionBuilder; |
33 | 34 |
import org.gvsig.expressionevaluator.ExpressionEvaluator; |
34 | 35 |
import org.gvsig.expressionevaluator.ExpressionRuntimeException; |
36 |
import org.gvsig.expressionevaluator.ExpressionUtils; |
|
35 | 37 |
import org.gvsig.expressionevaluator.Interpreter; |
36 | 38 |
import org.gvsig.expressionevaluator.MutableSymbolTable; |
37 | 39 |
import org.gvsig.expressionevaluator.Optimizer; |
... | ... | |
127 | 129 |
FeatureQueryOrder queryOrder = null; |
128 | 130 |
if (order != null || order_mode != null) { |
129 | 131 |
for (int n = 0; n < order.parameters().size(); n++) { |
130 |
String member = (String) interpreter.run(order.parameters().get(n)); |
|
131 |
Boolean mode = (Boolean) interpreter.run(order_mode.parameters().get(n)); |
|
132 | 132 |
if (queryOrder == null) { |
133 | 133 |
queryOrder = new DefaultFeatureQueryOrder(); |
134 | 134 |
} |
135 |
queryOrder.add(member, mode); |
|
135 |
Boolean mode = (Boolean) ((Code.Constant)order_mode.parameters().get(n)).value(); |
|
136 |
Code memberCode = order.parameters().get(n); |
|
137 |
if(memberCode.code() == Code.IDENTIFIER) { |
|
138 |
queryOrder.add(((Code.Identifier)memberCode).name(), mode); |
|
139 |
} else { |
|
140 |
Expression exp = ExpressionUtils.createExpression(memberCode.toString()); |
|
141 |
queryOrder.add(exp, mode); |
|
142 |
} |
|
136 | 143 |
} |
137 | 144 |
} |
138 | 145 |
String intovar = null; |
... | ... | |
148 | 155 |
List<Feature> features; |
149 | 156 |
FeatureQuery query = featureStore.createFeatureQuery(); |
150 | 157 |
if (where != null) { |
151 |
Code where2 = removeOuterTablesReferences(interpreter, where); |
|
158 |
Code where2 = removeOuterTablesReferences(interpreter, where, featureStore.getDefaultFeatureTypeQuietly());
|
|
152 | 159 |
ExpressionEvaluator filter = new DefaultFeatureExpressionEvaluator(where2.toString()); |
153 | 160 |
filter.toSymbolTable().addSymbolTable(interpreter.getSymbolTable()); |
154 | 161 |
query.addFilter(filter); |
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/SelectAggregateFunction.java | ||
---|---|---|
120 | 120 |
} |
121 | 121 |
FeatureQuery query = featureStore.createFeatureQuery(); |
122 | 122 |
if (where != null) { |
123 |
Code where2 = removeOuterTablesReferences(interpreter, where); |
|
123 |
Code where2 = removeOuterTablesReferences(interpreter, where, featureStore.getDefaultFeatureTypeQuietly());
|
|
124 | 124 |
ExpressionEvaluator filter = new DefaultFeatureExpressionEvaluator(where2.toString()); |
125 | 125 |
filter.toSymbolTable().addSymbolTable(interpreter.getSymbolTable()); |
126 | 126 |
query.addFilter(filter); |
Also available in: Unified diff