Revision 44198 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/FetchFeatureProviderByReferenceOperation.java

View differences:

FetchFeatureProviderByReferenceOperation.java
7 7
import java.sql.SQLException;
8 8
import java.util.ArrayList;
9 9
import java.util.List;
10
import org.gvsig.expressionevaluator.ExpressionBuilder;
10 11
import org.gvsig.fmap.dal.exception.DataException;
11 12
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
12 13
import org.gvsig.fmap.dal.feature.FeatureType;
......
17 18
import org.gvsig.fmap.dal.store.jdbc2.JDBCUtils;
18 19
import org.gvsig.fmap.dal.store.jdbc2.OperationsFactory.TableReference;
19 20
import org.gvsig.fmap.dal.store.jdbc2.spi.JDBCSQLBuilderBase;
21
import static org.gvsig.fmap.dal.store.jdbc2.spi.JDBCSQLBuilderBase.PROP_FEATURE_TYPE;
22
import static org.gvsig.fmap.dal.store.jdbc2.spi.JDBCSQLBuilderBase.PROP_TABLE;
20 23
import org.gvsig.fmap.geom.DataTypes;
21 24

  
22 25

  
......
61 64
        String[] primaryKeys = reference.getKeyNames();
62 65
        
63 66
        JDBCSQLBuilderBase sqlbuilder = this.createSQLBuilder();
64
        
67
        ExpressionBuilder expbuilder = sqlbuilder.expression();
68

  
65 69
        for (FeatureAttributeDescriptor attr : featureType) {
66 70
            if( attr.getType()==DataTypes.GEOMETRY ) {
67 71
                sqlbuilder.select().column().name(attr.getName()).as_geometry();
......
83 87
            Object value = reference.getKeyValue(name);
84 88
            if( value == null ) {
85 89
                sqlbuilder.select().where().and(
86
                    sqlbuilder.isNull(sqlbuilder.column(name))
90
                    expbuilder.is_null(expbuilder.column(name))
87 91
                );                
88 92
            } else {
89 93
                sqlbuilder.select().where().and(
90
                    sqlbuilder.eq(
91
                        sqlbuilder.column(name), 
92
                        sqlbuilder.parameter(name).value(value)
94
                    expbuilder.eq(
95
                        expbuilder.column(name), 
96
                        expbuilder.parameter(name).value(value)
93 97
                    )
94 98
                );              
95 99
            }
96 100
        }
97 101
        sqlbuilder.select().limit(1);
98

  
102
        sqlbuilder.setProperties(
103
                ExpressionBuilder.Variable.class, 
104
                PROP_FEATURE_TYPE, featureType,
105
                PROP_TABLE, table
106
        );
99 107
        String sql = sqlbuilder.select().toString();
100 108

  
101 109
        PreparedStatement st = null;

Also available in: Unified diff