Revision 45778 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/DefaultEditableFeature.java
DefaultEditableFeature.java | ||
---|---|---|
327 | 327 |
@Override |
328 | 328 |
public void copyFrom(JsonObject values, Predicate<FeatureAttributeDescriptor> filter) { |
329 | 329 |
// iterate over the attributes and copy one by one |
330 |
boolean geometryCopied = false; |
|
330 | 331 |
for (FeatureAttributeDescriptor attr : this.getType()) { |
331 | 332 |
if (attr==null ) { |
332 | 333 |
continue; |
... | ... | |
353 | 354 |
switch(attr.getType()) { |
354 | 355 |
case DataTypes.GEOMETRY: |
355 | 356 |
value = GeometryUtils.createFrom(s); |
357 |
geometryCopied = true; |
|
356 | 358 |
break; |
357 | 359 |
case DataTypes.TIMESTAMP: |
358 | 360 |
try { |
... | ... | |
436 | 438 |
// Ignore |
437 | 439 |
} |
438 | 440 |
} |
439 |
if (this.getType().getDefaultGeometryAttribute()!=null && this.getDefaultGeometry()==null) { |
|
440 |
GeometryType geomType = this.getType().getDefaultGeometryAttribute().getGeomType(); |
|
441 |
Set<String> keys = values.keySet(); |
|
442 |
for (String key : keys) { |
|
443 |
try { |
|
444 |
String wkt = values.getString(key); |
|
445 |
Geometry geometry = GeometryUtils.createFrom(wkt); |
|
446 |
if (GeometryUtils.isSubtype(geomType.getType(), geometry.getType()) || GeometryUtils.canAggregate(geomType.getType(), geometry.getType())) { |
|
447 |
this.setDefaultGeometry(geometry); |
|
448 |
break; |
|
449 |
} |
|
450 |
} catch (Throwable tr) { |
|
451 |
LOG.trace("Can't get geometry from field {}.", new Object[]{key}); |
|
452 |
}; |
|
441 |
FeatureAttributeDescriptor attr = this.getType().getDefaultGeometryAttribute(); |
|
442 |
if (attr!=null && !geometryCopied) { |
|
443 |
if( filter==null || filter.test(attr) ) { |
|
444 |
GeometryType geomType = this.getType().getDefaultGeometryAttribute().getGeomType(); |
|
445 |
Set<String> keys = values.keySet(); |
|
446 |
for (String key : keys) { |
|
447 |
try { |
|
448 |
String wkt = values.getString(key); |
|
449 |
Geometry geometry = GeometryUtils.createFrom(wkt); |
|
450 |
if (GeometryUtils.isSubtype(geomType.getType(), geometry.getType()) || GeometryUtils.canAggregate(geomType.getType(), geometry.getType())) { |
|
451 |
this.setDefaultGeometry(geometry); |
|
452 |
break; |
|
453 |
} |
|
454 |
} catch (Throwable tr) { |
|
455 |
LOG.trace("Can't get geometry from field {}.", new Object[]{key}); |
|
456 |
}; |
|
457 |
} |
|
453 | 458 |
} |
454 | 459 |
} |
455 | 460 |
} |
Also available in: Unified diff