Revision 43358 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 | ||
---|---|---|
5 | 5 |
import java.sql.PreparedStatement; |
6 | 6 |
import java.sql.ResultSet; |
7 | 7 |
import java.sql.SQLException; |
8 |
import java.util.ArrayList; |
|
9 |
import java.util.List; |
|
8 | 10 |
import org.gvsig.fmap.dal.exception.DataException; |
9 | 11 |
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor; |
10 | 12 |
import org.gvsig.fmap.dal.feature.FeatureType; |
... | ... | |
62 | 64 |
String schema, |
63 | 65 |
String table |
64 | 66 |
) throws DataException { |
67 |
List<FeatureAttributeDescriptor> columns = new ArrayList<>(); |
|
65 | 68 |
|
66 | 69 |
// FeatureAttributeDescriptor[] primaryKey = storeType.getPrimaryKey(); |
67 | 70 |
String[] primaryKeys = reference.getKeyNames(); |
... | ... | |
71 | 74 |
for (FeatureAttributeDescriptor attr : featureType) { |
72 | 75 |
if( attr.getType()==DataTypes.GEOMETRY ) { |
73 | 76 |
sqlbuilder.select().column().name(attr.getName()).as_geometry(); |
77 |
columns.add(attr); |
|
74 | 78 |
} else { |
75 | 79 |
sqlbuilder.select().column().name(attr.getName()); |
80 |
columns.add(attr); |
|
76 | 81 |
} |
77 | 82 |
} |
78 | 83 |
sqlbuilder.select().from().table().database(database).schema(schema).name(table); |
79 | 84 |
for (String name : primaryKeys ) { |
80 | 85 |
if( !sqlbuilder.select().has_column(name) ) { |
81 | 86 |
sqlbuilder.select().column().name(name); |
87 |
columns.add(featureType.getAttributeDescriptor(name)); |
|
82 | 88 |
} |
83 | 89 |
Object value = reference.getKeyValue(name); |
84 | 90 |
if( value == null ) { |
... | ... | |
108 | 114 |
return null; |
109 | 115 |
} |
110 | 116 |
FeatureProvider data = this.helper.createFeature(featureType); |
111 |
this.helper.fetchFeature(data, rs);
|
|
117 |
this.helper.fetchFeature(data, rs, columns.toArray(new FeatureAttributeDescriptor[columns.size()]));
|
|
112 | 118 |
return data; |
113 | 119 |
|
114 | 120 |
} catch (SQLException ex) { |
Also available in: Unified diff