Revision 46221 trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.db/org.gvsig.fmap.dal.db.jdbc/src/main/java/org/gvsig/fmap/dal/store/jdbc2/spi/operations/CountOperation.java

View differences:

CountOperation.java
40 40
import org.gvsig.fmap.dal.feature.EditableFeatureAttributeDescriptor;
41 41
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
42 42
import org.gvsig.fmap.dal.feature.FeatureAttributeEmulator;
43
import org.gvsig.fmap.dal.feature.FeatureExtraColumns;
43 44
import org.gvsig.fmap.dal.feature.FeatureQuery;
44 45
import org.gvsig.fmap.dal.feature.FeatureType;
45 46
import org.gvsig.fmap.dal.store.jdbc2.JDBCHelper;
......
92 93
        ExpressionBuilder expbuilder = sqlbuilder.expression();
93 94

  
94 95
        SelectBuilder select = sqlbuilder.select();
95
        ArrayList<ExpressionBuilder.Value> valuesToRemoveFeatureType = new ArrayList<>();
96
        List<ExpressionBuilder.Value> valuesToRemoveFeatureType = new ArrayList<>();
97
        List<String> extraColumnNames = new ArrayList<>();
96 98

  
97 99
        if (this.query != null && this.query.hasGroupByColumns()) {
98 100
            JDBCSQLBuilderBase subsqlbuilder = this.createSQLBuilder();
......
101 103
            subselect.column().value(subsqlbuilder.count().all());
102 104
            for (FeatureAttributeDescriptor attr : this.featureType) {
103 105
                if (attr.isComputed()) {
106
                    if (extraColumnNames != null && !extraColumnNames.contains(attr.getName())) {
107
                        extraColumnNames.add(attr.getName());
108
                    }
104 109
                    if (attr.getRelationType() == DynField.RELATION_TYPE_NONE) {
105 110
                        FeatureAttributeEmulator attrEmulator = attr.getFeatureAttributeEmulator();
106 111
                        if (attrEmulator instanceof FeatureAttributeEmulatorExpression) {
......
138 143
                    }
139 144
                }
140 145
            }
146
            if (this.query != null) {
147
                FeatureExtraColumns extraColumns = this.query.getExtraColumn();
148
                if (extraColumns != null && !extraColumns.isEmpty()) {
149
                    for (EditableFeatureAttributeDescriptor attr : extraColumns.getColumns()) {
150
                        if (!attr.isComputed()) {
151
                            continue;
152
                        }
153
                        if (extraColumnNames != null && !extraColumnNames.contains(attr.getName())) {
154
                            extraColumnNames.add(attr.getName());
155
                        }
156
                    }
157
                }
158
            }
141 159
            
142
            
143
            
144
            
145
            
146 160
            if (this.query.hasGroupByColumns()) {
147 161
                subselect.from().table()
148 162
                        .database(this.table.getDatabase())
......
211 225
                    value.setProperty(PROP_FEATURE_TYPE, null);
212 226
                }
213 227
                this.helper.expandCalculedColumns(subsqlbuilder);
214
                this.helper.processSpecialFunctions(subsqlbuilder, featureType, null);
228
                this.helper.processSpecialFunctions(subsqlbuilder, featureType, extraColumnNames);
215 229
                String subsql = subselect.toString();
216 230
                select.from().table()
217 231
                        .database(this.table.getDatabase())

Also available in: Unified diff