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

View differences:

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