35 |
35 |
import javax.json.Json;
|
36 |
36 |
import javax.json.JsonObject;
|
37 |
37 |
import javax.json.JsonObjectBuilder;
|
|
38 |
import org.apache.commons.lang3.ArrayUtils;
|
38 |
39 |
import org.apache.commons.lang3.StringUtils;
|
39 |
40 |
import org.cresques.cts.IProjection;
|
40 |
41 |
import org.gvsig.fmap.dal.DALLocator;
|
... | ... | |
78 |
79 |
private WeakReference storeRef;
|
79 |
80 |
|
80 |
81 |
private boolean inserted = false;
|
|
82 |
private Object[] extraValuesData;
|
81 |
83 |
|
82 |
84 |
/*
|
83 |
85 |
* Usar con mucha precaucion o mejor no usar. Lo precisa el
|
... | ... | |
90 |
92 |
|
91 |
93 |
public DefaultFeature(FeatureStore store, FeatureProvider data) {
|
92 |
94 |
this.data = data;
|
|
95 |
this.extraValuesData = null;
|
93 |
96 |
this.storeRef = new WeakReference(store);
|
94 |
97 |
this.reference = null;
|
95 |
98 |
this.inserted = !data.isNew();
|
... | ... | |
97 |
100 |
|
98 |
101 |
DefaultFeature(DefaultFeature feature) {
|
99 |
102 |
this.data = feature.data.getCopy();
|
|
103 |
this.extraValuesData = ArrayUtils.clone(feature.extraValuesData);
|
100 |
104 |
this.storeRef = feature.storeRef;
|
101 |
105 |
this.reference = feature.reference;
|
102 |
106 |
this.inserted = feature.isInserted();
|
... | ... | |
105 |
109 |
public DefaultFeature(FeatureType targetType, Feature sourceFeature) {
|
106 |
110 |
DefaultFeature defaultFeature = (DefaultFeature)sourceFeature;
|
107 |
111 |
this.data = new DefaultFeatureProvider(targetType, (DefaultFeatureProvider)defaultFeature.getData());
|
|
112 |
this.extraValuesData = null;
|
108 |
113 |
this.storeRef = defaultFeature.storeRef;
|
109 |
114 |
this.reference = defaultFeature.reference;
|
110 |
115 |
this.inserted = defaultFeature.isInserted();
|
... | ... | |
129 |
134 |
|
130 |
135 |
public void setData(FeatureProvider data) {
|
131 |
136 |
this.data = data;
|
|
137 |
this.extraValuesData = null;
|
132 |
138 |
this.reference = null;
|
133 |
139 |
this.inserted = true;
|
134 |
140 |
}
|
... | ... | |
247 |
253 |
public void initializeValues(Feature feature) {
|
248 |
254 |
FeatureType myType=this.getType();
|
249 |
255 |
FeatureType type =feature.getType();
|
|
256 |
extraValuesData = null;
|
250 |
257 |
for (FeatureAttributeDescriptor attribute : type) {
|
251 |
258 |
FeatureAttributeDescriptor myAttribute=myType.getAttributeDescriptor(attribute.getName());
|
252 |
259 |
if (myAttribute != null) {
|
... | ... | |
747 |
754 |
if (value != null) { // FIXME: para comprobar si esta calculado usar
|
748 |
755 |
// un array
|
749 |
756 |
// especifico.
|
750 |
|
return get(attribute, this.data.get(index));
|
|
757 |
return get(attribute, value);
|
751 |
758 |
}
|
752 |
759 |
try {
|
753 |
760 |
value = eval.evaluate(this);
|
... | ... | |
1192 |
1199 |
}
|
1193 |
1200 |
|
1194 |
1201 |
|
1195 |
|
@Override
|
|
1202 |
@Override
|
1196 |
1203 |
public Object getExtraValue(String name) {
|
1197 |
|
FeatureExtraColumn column = this.getType().getExtraColumn();
|
1198 |
|
int index = column.getIndexOf(name);
|
1199 |
|
if( index <0 ) {
|
1200 |
|
return null;
|
|
1204 |
Object value;
|
|
1205 |
FeatureExtraColumn columns = this.getType().getExtraColumn();
|
|
1206 |
int index = columns.getIndexOf(name);
|
|
1207 |
if( index >= 0 ) {
|
|
1208 |
if( extraValuesData==null ) {
|
|
1209 |
extraValuesData = new Object[columns.size()];
|
|
1210 |
EditableFeatureAttributeDescriptor attrdesc = columns.get(index);
|
|
1211 |
value = attrdesc.getFeatureAttributeEmulator().get(this);
|
|
1212 |
extraValuesData[index] = value;
|
|
1213 |
} else {
|
|
1214 |
value = extraValuesData[index];
|
|
1215 |
if( value == null ) {
|
|
1216 |
EditableFeatureAttributeDescriptor attrdesc = columns.get(index);
|
|
1217 |
value = attrdesc.getFeatureAttributeEmulator().get(this);
|
|
1218 |
extraValuesData[index] = value;
|
|
1219 |
}
|
|
1220 |
}
|
|
1221 |
return value;
|
1201 |
1222 |
}
|
1202 |
|
Object value = this.data.getExtraValue(name);
|
1203 |
|
if( value == null ) {
|
1204 |
|
EditableFeatureAttributeDescriptor attrdesc = column.get(index);
|
1205 |
|
value = attrdesc.getFeatureAttributeEmulator().get(this);
|
1206 |
|
this.data.setExtraValue(index, value);
|
1207 |
|
}
|
|
1223 |
value = this.data.getExtraValue(name);
|
1208 |
1224 |
return value;
|
1209 |
1225 |
}
|
1210 |
1226 |
|
1211 |
1227 |
@Override
|
1212 |
1228 |
public boolean hasExtraValue(String name) {
|
|
1229 |
FeatureExtraColumn columns = this.getType().getExtraColumn();
|
|
1230 |
int index = columns.getIndexOf(name);
|
|
1231 |
if( index >= 0 ) {
|
|
1232 |
return true;
|
|
1233 |
}
|
1213 |
1234 |
return this.data.hasExtraValue(name);
|
1214 |
1235 |
}
|
1215 |
1236 |
|