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