Revision 46050 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/expressionbuilder/formatters/ComputedAttribute.java
ComputedAttribute.java | ||
---|---|---|
23 | 23 |
*/ |
24 | 24 |
package org.gvsig.fmap.dal.store.jdbc2.spi.expressionbuilder.formatters; |
25 | 25 |
|
26 |
import org.gvsig.expressionevaluator.Code; |
|
26 | 27 |
import org.gvsig.expressionevaluator.Expression; |
27 | 28 |
import org.gvsig.expressionevaluator.ExpressionBuilder; |
28 | 29 |
import org.gvsig.expressionevaluator.ExpressionBuilder.Value; |
29 | 30 |
import org.gvsig.expressionevaluator.Formatter; |
31 |
import org.gvsig.expressionevaluator.GeometryExpressionBuilder; |
|
30 | 32 |
import org.gvsig.fmap.dal.SQLBuilder; |
31 | 33 |
import org.gvsig.fmap.dal.expressionevaluator.FeatureAttributeEmulatorExpression; |
32 | 34 |
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor; |
33 | 35 |
import org.gvsig.fmap.dal.feature.FeatureAttributeEmulator; |
36 |
import org.gvsig.fmap.dal.feature.FeatureQuery; |
|
34 | 37 |
import org.gvsig.fmap.dal.feature.FeatureType; |
35 | 38 |
import org.gvsig.fmap.dal.store.jdbc2.JDBCHelper; |
36 | 39 |
import org.gvsig.fmap.dal.store.jdbc2.spi.JDBCSQLBuilderBase; |
37 | 40 |
import static org.gvsig.fmap.dal.store.jdbc2.spi.JDBCSQLBuilderBase.PROP_FEATURE_TYPE; |
38 | 41 |
import static org.gvsig.fmap.dal.store.jdbc2.spi.JDBCSQLBuilderBase.PROP_JDBCHELPER; |
42 |
import static org.gvsig.fmap.dal.store.jdbc2.spi.JDBCSQLBuilderBase.PROP_QUERY; |
|
39 | 43 |
|
40 | 44 |
/** |
41 | 45 |
* |
... | ... | |
64 | 68 |
} |
65 | 69 |
ExpressionBuilder.Variable variable = (ExpressionBuilder.Variable) value; |
66 | 70 |
FeatureAttributeDescriptor attr = featureType.getAttributeDescriptor(variable.name()); |
67 |
if( attr==null || !attr.isComputed() ) { |
|
71 |
if (attr == null) { |
|
72 |
FeatureQuery query = (FeatureQuery) value.getProperty(PROP_QUERY); |
|
73 |
attr = query.getExtraColumn().get(variable.name()); |
|
74 |
} |
|
75 |
|
|
76 |
if (attr == null || !attr.isComputed()) { |
|
68 | 77 |
return false; |
69 | 78 |
} |
79 |
|
|
70 | 80 |
FeatureAttributeEmulator emulator = attr.getFeatureAttributeEmulator(); |
71 | 81 |
if( !(emulator instanceof FeatureAttributeEmulatorExpression) ) { |
72 | 82 |
return false; |
... | ... | |
82 | 92 |
FeatureType featureType = (FeatureType) value.getProperty(PROP_FEATURE_TYPE); |
83 | 93 |
ExpressionBuilder.Variable variable = (ExpressionBuilder.Variable) value; |
84 | 94 |
FeatureAttributeDescriptor attr = featureType.getAttributeDescriptor(variable.name()); |
95 |
if (attr == null) { |
|
96 |
FeatureQuery query = (FeatureQuery) value.getProperty(PROP_QUERY); |
|
97 |
attr = query.getExtraColumn().get(variable.name()); |
|
98 |
} |
|
85 | 99 |
FeatureAttributeEmulator emulator = attr.getFeatureAttributeEmulator(); |
86 | 100 |
Expression expr = ((FeatureAttributeEmulatorExpression)emulator).getExpression(); |
87 |
return "("+ this.formatter.format(expr.getCode().toValue(this.sqlbuilder.expression()))+")"; |
|
101 |
Code code = expr.getCode(); |
|
102 |
GeometryExpressionBuilder builder = this.sqlbuilder.expression(); |
|
103 |
Value valueExpr = code.toValue(builder); |
|
104 |
return "("+ this.formatter.format(valueExpr)+")"; |
|
88 | 105 |
} |
89 | 106 |
|
90 | 107 |
} |
Also available in: Unified diff