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
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