Revision 46517 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 | ||
---|---|---|
25 | 25 |
|
26 | 26 |
import java.util.List; |
27 | 27 |
import org.apache.commons.lang3.Range; |
28 |
import org.apache.commons.lang3.StringUtils; |
|
28 | 29 |
import org.gvsig.expressionevaluator.Code; |
29 | 30 |
import org.gvsig.expressionevaluator.Codes; |
30 | 31 |
import org.gvsig.expressionevaluator.ExpressionRuntimeException; |
... | ... | |
41 | 42 |
import org.gvsig.expressionevaluator.Code.Callable; |
42 | 43 |
import org.gvsig.expressionevaluator.ExpressionBuilder; |
43 | 44 |
import org.gvsig.expressionevaluator.ExpressionBuilder.Value; |
45 |
import org.gvsig.fmap.dal.DALLocator; |
|
46 |
import org.gvsig.fmap.dal.DataManager; |
|
44 | 47 |
import org.gvsig.fmap.dal.SQLBuilder; |
48 |
import org.gvsig.fmap.dal.feature.FeatureType; |
|
45 | 49 |
import org.gvsig.fmap.dal.feature.impl.DefaultFeatureQueryOrder; |
46 | 50 |
|
47 | 51 |
/** |
... | ... | |
183 | 187 |
} |
184 | 188 |
|
185 | 189 |
if (columns != null) { |
186 |
for (Code column : columns.parameters()) { |
|
187 |
if (column instanceof Code.Identifier) { |
|
188 |
select.column().name( |
|
189 |
select.from().table(), |
|
190 |
((Code.Identifier) column).name() |
|
191 |
); |
|
190 |
if(columns.parameters().isEmpty()){ |
|
191 |
select.column().all(); |
|
192 |
} else { |
|
193 |
for (Code column : columns.parameters()) { |
|
194 |
if (column instanceof Code.Identifier) { |
|
195 |
String tableName = select.from().table().getName(); |
|
196 |
String columnName = ((Code.Identifier) column).name(); |
|
197 |
String builderTable = (String) builder.getProperty("Table"); |
|
198 |
FeatureType featureType = null; |
|
199 |
if(StringUtils.equalsIgnoreCase(builderTable, tableName)){ |
|
200 |
featureType = (FeatureType) builder.getProperty("FeatureType"); |
|
201 |
} else { |
|
202 |
DataManager dataManager = DALLocator.getDataManager(); |
|
203 |
featureType = dataManager.getStoresRepository().getFeatureType(tableName); |
|
204 |
} |
|
205 |
if(featureType == null){ |
|
206 |
select.column().name( |
|
207 |
select.from().table(), |
|
208 |
columnName |
|
209 |
); |
|
210 |
} else if(featureType.get(columnName) != null) { |
|
211 |
select.column().name( |
|
212 |
select.from().table(), |
|
213 |
columnName |
|
214 |
); |
|
215 |
} else { |
|
216 |
select.column().name( |
|
217 |
columnName |
|
218 |
).table(null); |
|
219 |
} |
|
220 |
} |
|
192 | 221 |
} |
193 | 222 |
} |
194 | 223 |
} |
... | ... | |
214 | 243 |
} |
215 | 244 |
} |
216 | 245 |
|
217 |
|
|
218 |
|
|
219 | 246 |
} |
Also available in: Unified diff