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