Revision 44022

View differences:

trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.shp/src/main/java/org/gvsig/fmap/dal/store/shp/SHPFeatureProvider.java
90 90

  
91 91
	public Geometry getDefaultGeometry() {
92 92
		this.load();
93
		return this.defaultGeometry;
93
                Geometry geom = this.defaultGeometry;
94
                if( geom!=null && geom.getProjection()==null ) {
95
                    geom.setProjection(this.store.getProjection());
96
                }
97
		return geom;
94 98
	}
95 99

  
96 100
	public Envelope getDefaultEnvelope() {
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.shp/src/main/java/org/gvsig/fmap/dal/store/shp/SHPStoreProvider.java
123 123
        return (SHPStoreParameters) super.getParameters();
124 124
    }
125 125

  
126
    public IProjection getProjection() {
127
        return this.getShpParameters().getCRS();
128
    }
129
    
126 130
    @Override
127 131
    public Object getDynValue(String name) throws DynFieldNotFoundException {
128 132
        if (DataStore.METADATA_CRS.equalsIgnoreCase(name)) {
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
333 333
        return envelope;
334 334
    }
335 335

  
336
    @Override
336 337
    public Geometry getDefaultGeometry() {
337 338
    	Geometry geom = this.data.getDefaultGeometry();
338
    	if( geom!=null ) {
339
    		return geom;
340
    	}
341
    	int i = this.data.getType().getDefaultGeometryAttributeIndex();
342
        Object x = this.get(i);
343
        if( x instanceof Geometry ) {
344
            return (Geometry) x;
339
        if( geom == null ) {
340
            int i = this.data.getType().getDefaultGeometryAttributeIndex();
341
            Object x = this.get(i);
342
            if( x instanceof Geometry ) {
343
                geom = (Geometry) x;
344
            } else {
345
                geom = this.getGeometry(i);
346
            }
345 347
        }
346
        return this.getGeometry(i);
348
        if( geom != null ) {
349
            if( geom.getProjection()==null ) {
350
                FeatureType type = this.getType();
351
                DefaultFeatureAttributeDescriptor attrdesc = (DefaultFeatureAttributeDescriptor) type.get(type.getDefaultGeometryAttributeIndex());
352
                IProjection proj = attrdesc.getSRS(this.storeRef);
353
                geom.setProjection(proj);
354
            }
355
        }
356
        return geom;
347 357
    }
348 358

  
349 359
    public IProjection getDefaultSRS() {
350
        return this.data.getType().getDefaultSRS();
360
        IProjection srs = this.data.getType().getDefaultSRS();
361
        if( srs == null ) {
362
            FeatureType type = this.getType();
363
            DefaultFeatureAttributeDescriptor attrdesc = (DefaultFeatureAttributeDescriptor) type.get(type.getDefaultGeometryAttributeIndex());
364
            srs = attrdesc.getSRS(this.storeRef);
365
        }
366
        return srs;
351 367
    }
352 368

  
353 369
    public List getGeometries() {
......
466 482
    private Object get(FeatureAttributeDescriptor featureAttributeDescriptor, Object value){
467 483
        FeatureAttributeEmulator emulator = featureAttributeDescriptor.getFeatureAttributeEmulator();
468 484
        if( emulator != null ) {
469
            return emulator.get(this);
485
            value = emulator.get(this);
486
        } else {
487
            FeatureAttributeGetter getter = featureAttributeDescriptor.getFeatureAttributeGetter();
488
            if( getter != null ) {
489
                value = getter.getter(value);
490
            }
470 491
        }
471
        FeatureAttributeGetter getter = featureAttributeDescriptor.getFeatureAttributeGetter();
472
        if( getter != null ) {
473
            return getter.getter(value);
492
        if( featureAttributeDescriptor.getType()==DataTypes.GEOMETRY ) {
493
            if( value != null ) {
494
                Geometry geom = (Geometry)value;
495
                if( geom.getProjection()==null ) {
496
                    IProjection proj = ((DefaultFeatureAttributeDescriptor)featureAttributeDescriptor).getSRS(this.storeRef);
497
                    geom.setProjection(proj);
498
                }
499
            }
474 500
        }
475 501
        return value;
476 502
    }
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/DefaultFeatureAttributeDescriptor.java
32 32
import org.apache.commons.lang3.ArrayUtils;
33 33
import org.cresques.cts.IProjection;
34 34
import org.gvsig.fmap.crs.CRSFactory;
35
import org.gvsig.fmap.dal.DataStore;
35 36
import org.gvsig.fmap.dal.feature.EditableFeatureAttributeDescriptor;
36 37
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
37 38
import org.gvsig.fmap.dal.feature.FeatureAttributeEmulator;
......
314 315
        return this.SRS;
315 316
    }
316 317

  
318
    public IProjection getSRS(WeakReference storeRef) {
319
        if( this.SRS==null ) {
320
            FeatureStore store = (FeatureStore) storeRef.get();
321
            this.SRS = (IProjection) store.getDynValue(DataStore.METADATA_CRS);
322
        }
323
        return this.SRS;
324
    }
325

  
326

  
317 327
    @Override
318 328
    public int getSize() {
319 329
        return this.size;

Also available in: Unified diff