Revision 43420

View differences:

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