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

View differences:

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