Revision 45425 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/DefaultFeatureType.java

View differences:

DefaultFeatureType.java
23 23
 */
24 24
package org.gvsig.fmap.dal.feature.impl;
25 25

  
26
import org.gvsig.fmap.dal.JsonUtils;
27 26
import java.io.File;
28 27
import java.lang.ref.WeakReference;
29 28
import java.util.ArrayList;
......
37 36
import java.util.Set;
38 37
import java.util.function.Predicate;
39 38
import java.util.zip.CRC32;
40
import javax.json.Json;
41 39
import javax.json.JsonObject;
42
import javax.json.JsonObjectBuilder;
40
import javax.json.JsonValue;
43 41
import org.apache.commons.lang3.ArrayUtils;
44 42
import org.apache.commons.lang3.StringUtils;
45 43

  
......
72 70
import org.gvsig.tools.persistence.PersistentState;
73 71
import org.gvsig.tools.persistence.exception.PersistenceException;
74 72
import org.gvsig.fmap.dal.feature.FeatureExtraColumns;
73
import org.gvsig.fmap.dal.impl.expressionevaluator.DefaultFeatureAttributeEmulatorExpression;
74
import org.gvsig.json.Json;
75
import org.gvsig.json.JsonManager;
76
import org.gvsig.json.JsonObjectBuilder;
77
import org.gvsig.json.SupportToJson;
75 78

  
76 79
@SuppressWarnings("UseSpecificCatch")
77 80
public class DefaultFeatureType
78 81
        extends ArrayList<FeatureAttributeDescriptor>
79 82
        implements
80
        FeatureType,
81
        Persistent,
82
        DynClass,
83
        DynStruct_v2,
84
        org.gvsig.tools.lang.Cloneable {
83
            FeatureType,
84
            Persistent,
85
            DynClass,
86
            DynStruct_v2,
87
            org.gvsig.tools.lang.Cloneable {
85 88

  
86 89
    /**
87 90
     *
......
1295 1298
    @Override
1296 1299
    public JsonObjectBuilder toJsonBuilder() {
1297 1300
        JsonObjectBuilder builder = Json.createObjectBuilder();
1298
        JsonUtils.builder_add(builder, "id",id);
1299
        JsonUtils.builder_add(builder, "internalID",internalID);
1300
        JsonUtils.builder_add(builder, "label",label);
1301
        JsonUtils.builder_add(builder, "description",description);
1302
        JsonUtils.builder_add(builder, "allowAtomaticValues",allowAtomaticValues);
1303
        JsonUtils.builder_add(builder, "hasOID",hasOID);
1304
        JsonUtils.builder_add(builder, "defaultGeometryAttributeName",defaultGeometryAttributeName);
1305
        JsonUtils.builder_add(builder, "defaultTimeAttributeName",defaultTimeAttributeName);        
1306
        JsonUtils.builder_add(builder, "tags", tags);
1307
        JsonUtils.builder_add(builder, "extraColumns", this.extraColumns);
1308
        JsonUtils.builder_add(builder, "descriptors", this);
1301
        builder.add_class(this);
1302
        builder.add("id",id);
1303
        builder.add("internalID",internalID);
1304
        builder.add("label",label);
1305
        builder.add("description",description);
1306
        builder.add("allowAtomaticValues",allowAtomaticValues);
1307
        builder.add("hasOID",hasOID);
1308
        builder.add("defaultGeometryAttributeName",defaultGeometryAttributeName);
1309
        builder.add("defaultTimeAttributeName",defaultTimeAttributeName);        
1310
        builder.add("tags", tags);
1311
        builder.add("extraColumns", this.extraColumns);
1312
        builder.add("descriptors", this.iterator());
1309 1313
        
1310 1314
        return builder;        
1311 1315
    }
1316

  
1317
    public void fromJson(JsonObject json) {
1318
        this.clear();
1319
        this.id = json.getString("id", null);
1320
        this.internalID = json.getString("internalID", null);
1321
        this.label = json.getString("label", null);
1322
        this.description = json.getString("description",null);
1323
        this.allowAtomaticValues = json.getBoolean("allowAtomaticValues",false);
1324
        this.hasOID = json.getBoolean("hasOID", false);
1325
        this.defaultGeometryAttributeName = json.getString("defaultGeometryAttributeName", null);
1326
        this.defaultTimeAttributeName = json.getString("defaultTimeAttributeName",null);
1327
        this.tags = (Tags) Json.toObject(json, "tags");
1328
        this.extraColumns = (FeatureExtraColumns) Json.toObject(json, "extraColumns");
1329
        if( json.containsKey("descriptors") ) {
1330
            for (JsonValue jsonValue : json.getJsonArray("descriptors")) {
1331
                DefaultEditableFeatureAttributeDescriptor attr = new DefaultEditableFeatureAttributeDescriptor(this, false);
1332
                attr.fromJson((JsonObject) jsonValue);
1333
                this.add(attr);
1334
            }
1335
        }
1336
    }
1337
    
1338
    private static class TheJsonSerializer implements JsonManager.JsonSerializer {
1339
        
1340
        public TheJsonSerializer() {            
1341
        }
1342

  
1343
        @Override
1344
        public Class getObjectClass() {
1345
            return DefaultFeatureType.class;
1346
        }
1347

  
1348
        @Override
1349
        public Object toObject(JsonObject json) {
1350
            DefaultFeatureType o = new DefaultFeatureType();
1351
            o.fromJson(json);
1352
            return o;
1353
        }
1354

  
1355
        @Override
1356
        public JsonObjectBuilder toJsonBuilder(Object value) {
1357
            return ((SupportToJson)value).toJsonBuilder();
1358
        }
1359
        
1360
    }
1361

  
1362
    public static void selfRegister() {
1363
        Json.registerSerializer(new TheJsonSerializer());
1364
    }
1365

  
1312 1366
}

Also available in: Unified diff