Revision 45275

View differences:

branches/org.gvsig.desktop-cvsgis1/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
35 35
import java.util.function.Predicate;
36 36
import javax.json.JsonNumber;
37 37
import javax.json.JsonObject;
38
import javax.json.JsonString;
39
import javax.json.JsonValue;
38 40
import org.gvsig.fmap.dal.DataTypes;
39 41

  
40 42
import org.gvsig.fmap.dal.feature.EditableFeature;
......
58 60
    private static final Logger LOG = LoggerFactory.getLogger(DefaultEditableFeature.class);
59 61

  
60 62
    private DefaultFeature source;
63
    private boolean updatable;
61 64

  
62 65
    protected DefaultEditableFeature(DefaultFeature feature) {
63 66
        super(feature);
64 67
        this.source = feature;
68
        this.updatable = this.source!=null;
65 69
    }
66 70

  
67 71
    protected DefaultEditableFeature(DefaultEditableFeature feature) {
68 72
        super(feature);
69 73
        this.source = (DefaultFeature) feature.getSource();
74
        this.updatable = this.source!=null;
70 75
    }
71 76

  
72 77
    public DefaultEditableFeature(DefaultFeatureStore store, FeatureProvider data) {
73 78
        // Se trata de un editable feature sobre una ya existente
74 79
        super(store, data);
75 80
        this.source = null;
81
        this.updatable = this.source!=null;
76 82
    }
77 83

  
78 84
    @Override
......
81 87
    }
82 88

  
83 89
    @Override
90
    public boolean isUpdatable() {
91
        return this.updatable;
92
    }
93
    
94
    @Override
95
    public void setUpdatable(boolean updatable) {
96
        this.updatable = updatable;
97
    }
98
    
99
    @Override
84 100
    public EditableFeature getEditable() {
85 101
        return this;
86 102
    }
......
322 338
                continue;
323 339
            }           
324 340
            Object value;
341
            JsonValue jsonValue = values.get(attrname);
325 342
            try {
326
                switch( values.getValueType() ) {
343
                switch( jsonValue.getValueType() ) {
327 344
                    case STRING:
345
                        String s = ((JsonString)jsonValue).getString();
328 346
                        switch(attr.getType()) {
329 347
                            case DataTypes.GEOMETRY:
330
                                value = GeometryUtils.createFrom(values.getString(attrname));
348
                                value = GeometryUtils.createFrom(s);
331 349
                                break;
332 350
                            case DataTypes.TIMESTAMP:
333 351
                                try {
334
                                    TemporalAccessor x = DateTimeFormatter.ISO_DATE_TIME.parse(values.getString(attrname));
352
                                    TemporalAccessor x = DateTimeFormatter.ISO_DATE_TIME.parse(s);
335 353
                                    LocalDateTime date = LocalDateTime.from(x);
336 354
                                    value = java.sql.Timestamp.valueOf(date);
337 355
                                } catch(Exception ex) {
338
                                    value = values.getString(attrname);
356
                                    value = s;
339 357
                                }
340 358
                                break;
341 359
                            case DataTypes.DATE:
342 360
                                try {
343
                                    TemporalAccessor x = DateTimeFormatter.ISO_DATE.parse(values.getString(attrname));
361
                                    TemporalAccessor x = DateTimeFormatter.ISO_DATE.parse(s);
344 362
                                    LocalDate date = LocalDate.from(x);
345 363
                                    value = java.sql.Date.valueOf(date);
346 364
                                } catch(Exception ex) {
347
                                    value = values.getString(attrname);
365
                                    value = s;
348 366
                                }
349 367
                                break;
350 368
                            case DataTypes.TIME:
351 369
                                try {
352
                                    TemporalAccessor x = DateTimeFormatter.ISO_TIME.parse(values.getString(attrname));
370
                                    TemporalAccessor x = DateTimeFormatter.ISO_TIME.parse(s);
353 371
                                    LocalTime date = LocalTime.from(x);
354 372
                                    value = java.sql.Time.valueOf(date);
355 373
                                } catch(Exception ex) {
356
                                    value = values.getString(attrname);
374
                                    value = s;
357 375
                                }
358 376
                                break;
359 377
                            case DataTypes.STRING:
360 378
                            default:
361
                                value = values.getString(attrname);
379
                                value = s;
362 380
                                break;
363 381
                        }
364 382
                        break;
365 383
                    case NUMBER:
366
                        JsonNumber n = values.getJsonNumber(attrname);
384
                        JsonNumber n =  (JsonNumber) jsonValue;
367 385
                        switch(attr.getType()) {
368
                            case DataTypes.BIGDECIMAL:
386
                            case DataTypes.DECIMAL:
369 387
                                value = n.bigDecimalValue();
370 388
                                break;
371 389
                            case DataTypes.BYTE:

Also available in: Unified diff