Revision 43420
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.exportto/org.gvsig.exportto.swing/org.gvsig.exportto.swing.prov/org.gvsig.exportto.swing.prov.jdbc/src/main/java/org/gvsig/exportto/swing/prov/jdbc/ExporrtoJDBCService.java | ||
---|---|---|
222 | 222 |
int sourceGeometryIndex = -1; |
223 | 223 |
if( getGeometryColumnCount(sourceFeatureType)==1 |
224 | 224 |
&& getGeometryColumnCount(targetFeatureType)==1 ) { |
225 |
// Solo si hay una columna de geometria asignaremos las geometrias
|
|
225 |
// Si solo hay una columna de geometria asignaremos las geometrias
|
|
226 | 226 |
// independientemente de como se llamen los campos. |
227 | 227 |
targetGeometryIndex = targetFeatureType.getDefaultGeometryAttributeIndex(); |
228 | 228 |
sourceGeometryIndex = sourceFeatureType.getDefaultGeometryAttributeIndex(); |
229 |
} else { |
|
230 |
FeatureAttributeDescriptor attr = sourceFeatureType.getDefaultGeometryAttribute(); |
|
231 |
sourceGeometryIndex = attr.getIndex(); |
|
232 |
targetGeometryIndex = targetFeatureType.getAttributeDescriptor(attr.getName()).getIndex(); |
|
229 | 233 |
} |
230 | 234 |
|
231 | 235 |
logger.debug("Inserting rows"); |
... | ... | |
253 | 257 |
} |
254 | 258 |
} |
255 | 259 |
|
256 |
Geometry geometry = targetFeature.getDefaultGeometry();
|
|
260 |
Geometry geometry = targetFeature.getGeometry(targetGeometryIndex);
|
|
257 | 261 |
if (geometry != null) { |
258 | 262 |
switch (this.options.getGeometryChecks()) { |
259 | 263 |
case CHECK_IF_CORRUPT: |
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.spi/src/main/java/org/gvsig/fmap/dal/feature/spi/DefaultFeatureProvider.java | ||
---|---|---|
26 | 26 |
import org.gvsig.fmap.dal.feature.EditableFeatureType; |
27 | 27 |
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor; |
28 | 28 |
import org.gvsig.fmap.dal.feature.FeatureType; |
29 |
import org.gvsig.fmap.dal.feature.exception.SetReadOnlyAttributeException;
|
|
29 |
import org.gvsig.fmap.geom.DataTypes;
|
|
30 | 30 |
import org.gvsig.fmap.geom.Geometry; |
31 | 31 |
import org.gvsig.fmap.geom.primitive.Envelope; |
32 |
import org.gvsig.tools.ToolsLocator; |
|
33 |
import org.gvsig.tools.dataTypes.CoercionException; |
|
32 | 34 |
|
33 | 35 |
/** |
34 | 36 |
* Default implementation for {@link FeatureProvider} |
... | ... | |
77 | 79 |
* java.lang.Object) |
78 | 80 |
*/ |
79 | 81 |
public void set(int i, Object value) { |
80 |
FeatureAttributeDescriptor attribute = featureType.getAttributeDescriptor(i);
|
|
81 |
if( this.isReadOnly(i) ) {
|
|
82 |
FeatureAttributeDescriptor attribute = featureType.getAttributeDescriptor(i); |
|
83 |
if( this.isReadOnly(i) ) { |
|
82 | 84 |
return; |
83 | 85 |
} |
84 | 86 |
if (featureType.getDefaultGeometryAttributeIndex() == i) { |
85 |
defaultGeometry = (Geometry) value; |
|
86 |
envelope = null; |
|
87 |
if( value instanceof Geometry ) { |
|
88 |
defaultGeometry = (Geometry) value; |
|
89 |
} else { |
|
90 |
try { |
|
91 |
defaultGeometry = (Geometry) ToolsLocator.getDataTypesManager().coerce(DataTypes.GEOMETRY, value); |
|
92 |
} catch (CoercionException ex) { |
|
93 |
|
|
94 |
} |
|
95 |
} |
|
96 |
envelope = null; |
|
87 | 97 |
} |
88 | 98 |
if (value == null) { |
89 | 99 |
nulls[i] = true; |
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/feature/impl/DefaultFeature.java | ||
---|---|---|
308 | 308 |
return geom; |
309 | 309 |
} |
310 | 310 |
int i = this.data.getType().getDefaultGeometryAttributeIndex(); |
311 |
geom = (Geometry) this.get(i); |
|
312 |
return geom; |
|
311 |
Object x = this.get(i); |
|
312 |
if( x instanceof Geometry ) { |
|
313 |
return (Geometry) x; |
|
314 |
} |
|
315 |
return this.getGeometry(i); |
|
313 | 316 |
} |
314 | 317 |
|
315 | 318 |
public IProjection getDefaultSRS() { |
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/feature/impl/DefaultEditableFeatureType.java | ||
---|---|---|
340 | 340 |
throw new IllegalArgumentException("Attribute '" + name |
341 | 341 |
+ "' not found."); |
342 | 342 |
} |
343 |
if (attr.getType() != DataTypes.GEOMETRY) { |
|
344 |
throw new IllegalArgumentException("Attribute '" + name |
|
345 |
+ "' is not a geometry."); |
|
346 |
} |
|
343 |
// if (attr.getType() != DataTypes.GEOMETRY) {
|
|
344 |
// throw new IllegalArgumentException("Attribute '" + name
|
|
345 |
// + "' is not a geometry.");
|
|
346 |
// }
|
|
347 | 347 |
this.defaultGeometryAttributeName = name; |
348 | 348 |
this.defaultGeometryAttributeIndex = attr.getIndex(); |
349 | 349 |
} |
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/JDBCStoreProviderBase.java | ||
---|---|---|
21 | 21 |
import org.gvsig.fmap.dal.exception.InitializeException; |
22 | 22 |
import org.gvsig.fmap.dal.exception.OpenException; |
23 | 23 |
import org.gvsig.fmap.dal.exception.ReadException; |
24 |
import org.gvsig.fmap.dal.feature.EditableFeatureAttributeDescriptor; |
|
24 | 25 |
import org.gvsig.fmap.dal.feature.EditableFeatureType; |
26 |
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor; |
|
25 | 27 |
import org.gvsig.fmap.dal.feature.FeatureQuery; |
26 | 28 |
import org.gvsig.fmap.dal.feature.FeatureRule; |
27 | 29 |
import org.gvsig.fmap.dal.feature.FeatureRules; |
... | ... | |
52 | 54 |
import org.gvsig.fmap.dal.store.jdbc2.spi.operations.FetchFeatureProviderByReferenceOperation; |
53 | 55 |
import org.gvsig.fmap.dal.store.jdbc2.spi.operations.FetchFeatureTypeOperation; |
54 | 56 |
import org.gvsig.fmap.dal.store.jdbc2.spi.operations.PerformChangesOperation; |
57 |
import org.gvsig.fmap.geom.Geometry; |
|
55 | 58 |
import org.gvsig.fmap.geom.primitive.Envelope; |
56 | 59 |
import org.gvsig.tools.dynobject.DynObject; |
57 | 60 |
import org.gvsig.tools.dynobject.exception.DynFieldNotFoundException; |
... | ... | |
469 | 472 |
); |
470 | 473 |
fetchFeatureType.perform(); |
471 | 474 |
|
475 |
if( !StringUtils.isEmpty(params.getDefaultGeometryField()) ) { |
|
476 |
if( !params.getDefaultGeometryField().equalsIgnoreCase(type.getDefaultGeometryAttributeName()) ) { |
|
477 |
type.setDefaultGeometryAttributeName(params.getDefaultGeometryField()); |
|
478 |
EditableFeatureAttributeDescriptor attr = (EditableFeatureAttributeDescriptor) type.getDefaultGeometryAttribute(); |
|
479 |
attr.setGeometryType(Geometry.TYPES.GEOMETRY, Geometry.SUBTYPES.GEOM2D); |
|
480 |
} |
|
481 |
} |
|
472 | 482 |
FeatureType defaultType = type.getNotEditableCopy(); |
473 | 483 |
List<FeatureType> types = Collections.singletonList(defaultType); |
474 | 484 |
this.getStoreServices().setFeatureTypes(types, defaultType); |
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/JDBCHelperBase.java | ||
---|---|---|
272 | 272 |
|
273 | 273 |
@Override |
274 | 274 |
public void fetchFeature(FeatureProvider feature, ResultSet rs, FeatureAttributeDescriptor[] columns) throws DataException { |
275 |
Object value; |
|
276 |
FeatureAttributeDescriptor column; |
|
275 | 277 |
try { |
276 |
Object value; |
|
277 | 278 |
for (int index = 0; index < columns.length; index++) { |
278 |
FeatureAttributeDescriptor column = columns[index];
|
|
279 |
column = columns[index]; |
|
279 | 280 |
switch (column.getType()) { |
280 | 281 |
case DataTypes.GEOMETRY: |
281 | 282 |
value = this.getGeometryFromColumn(rs, index + 1); |
trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.geodb.app/org.gvsig.geodb.app.mainplugin/src/main/java/org/gvsig/geodb/vectorialdb/wizard/TablesListItemVectorial.java | ||
---|---|---|
82 | 82 |
auxAll.add(dbattr.getName()); |
83 | 83 |
|
84 | 84 |
} |
85 |
if( geo_atts.isEmpty() ) { |
|
86 |
iter = ft.iterator(); |
|
87 |
while (iter.hasNext()) { |
|
88 |
dbattr = (FeatureAttributeDescriptor) iter.next(); |
|
89 |
if (dbattr.getDataType().getType() == DataTypes.BYTEARRAY || |
|
90 |
dbattr.getDataType().getType() == DataTypes.STRING) { |
|
91 |
geo_atts.add(dbattr); |
|
92 |
} |
|
93 |
} |
|
94 |
} |
|
85 | 95 |
|
86 | 96 |
if (auxId.size() > 0) { |
87 | 97 |
StringBuilder strb = new StringBuilder(); |
Also available in: Unified diff