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

View differences:

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