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