Search in sources :

Example 1 with Value

use of org.whole.lang.json.model.Value in project whole by wholeplatform.

the class JSONUtils method toMap.

public static Map<String, Value> toMap(IEntity entity) {
    Map<String, Value> map = new HashMap<String, Value>();
    if (Matcher.matchImpl(JSONEntityDescriptorEnum.Object, entity)) {
        org.whole.lang.json.model.Object object = (org.whole.lang.json.model.Object) entity;
        for (int i = 0, size = object.size(); i < size; i++) {
            Pair pair = object.get(i);
            map.put(pair.getName().getValue(), pair.getValue());
        }
    }
    return map;
}
Also used : HashMap(java.util.HashMap) Value(org.whole.lang.json.model.Value) Pair(org.whole.lang.json.model.Pair)

Example 2 with Value

use of org.whole.lang.json.model.Value in project whole by wholeplatform.

the class JSONLDEntityDecoder method decode.

public IEntity decode(org.whole.lang.json.model.Object jsonEntity) {
    String edUri = null;
    Value body = jsonEntity;
    for (int i = 0; i < jsonEntity.size(); i++) {
        Pair pair = jsonEntity.get(i);
        String name = pair.getName().getValue();
        if (name.equals("@type"))
            edUri = pair.getValue().wStringValue();
        else if (name.equals("@list") || name.equals("@set") || name.equals("@value"))
            body = pair.getValue();
    }
    if (edUri == null)
        return super.applyRules(jsonEntity);
    EntityDescriptor<?> ed = CommonsDataTypePersistenceParser.getEntityDescriptor(edUri, true, null);
    IEntityFactory ef = GenericEntityFactory.instance(RegistryConfigurations.RESOLVER);
    IEntity entity = ef.create(ed);
    switch(ed.getEntityKind()) {
        case SIMPLE:
            FeatureDescriptorEnum fdEnum = ed.getFeatureDescriptorEnum();
            for (int i = 0; i < body.wSize(); i++) {
                Pair pair = (Pair) body.wGet(i);
                String name = pair.getName().getValue();
                if (!name.startsWith("@")) {
                    FeatureDescriptor fd = fdEnum.valueOf(name);
                    entity.wSet(fd, applyRules(pair.getValue()));
                }
            }
            break;
        case COMPOSITE:
            for (int i = 0; i < body.wSize(); i++) entity.wAdd(applyRules(body.wGet(i)));
            break;
        case DATA:
            DataTypeUtils.convert(body, entity);
    }
    return entity;
}
Also used : FeatureDescriptorEnum(org.whole.lang.reflect.FeatureDescriptorEnum) IEntity(org.whole.lang.model.IEntity) FeatureDescriptor(org.whole.lang.reflect.FeatureDescriptor) IEntityFactory(org.whole.lang.factories.IEntityFactory) Value(org.whole.lang.json.model.Value) Pair(org.whole.lang.json.model.Pair)

Example 3 with Value

use of org.whole.lang.json.model.Value in project whole by wholeplatform.

the class JSONParserTemplateFactory method build.

public IEntity build() throws JsonParseException, IOException {
    switch(parser.nextToken()) {
        case START_OBJECT:
            Value object = factory.createObject();
            do {
                IEntity value = build();
                if (parser.getCurrentToken() == JsonToken.END_OBJECT) {
                    parser.clearCurrentToken();
                    return object;
                }
                object.wAdd(value);
            } while (true);
        case FIELD_NAME:
            return factory.createPair(factory.createName(parser.getText()), (Value) build());
        case END_OBJECT:
            return null;
        case START_ARRAY:
            Value array = factory.createArray();
            do {
                IEntity value = build();
                if (parser.getCurrentToken() == JsonToken.END_ARRAY) {
                    parser.clearCurrentToken();
                    return array;
                }
                array.wAdd(value);
            } while (true);
        case END_ARRAY:
            return null;
        case VALUE_STRING:
            return factory.createString(parser.getText());
        case VALUE_NUMBER_FLOAT:
            return factory.createDecimal(parser.getDoubleValue());
        case VALUE_NUMBER_INT:
            return factory.createInt(parser.getLongValue());
        case VALUE_FALSE:
            return factory.createBool(false);
        case VALUE_TRUE:
            return factory.createBool(true);
        case VALUE_NULL:
            return factory.createNull();
        default:
            throw new IllegalArgumentException();
    }
}
Also used : IEntity(org.whole.lang.model.IEntity) Value(org.whole.lang.json.model.Value)

Example 4 with Value

use of org.whole.lang.json.model.Value in project whole by wholeplatform.

the class JSONLDEntityEncoder method encode.

public Value encode(IEntity entity) {
    JSONEntityFactory ef = JSONEntityFactory.instance(RegistryConfigurations.RESOLVER);
    org.whole.lang.json.model.Object resultObject = ef.createObject(entity.wSize());
    setCopy(entity, resultObject);
    EntityDescriptor<?> ed = entity.wGetEntityDescriptor();
    resultObject.add(ef.createPair(ef.createName("@type"), ef.createString(ed.getURI())));
    switch(ed.getEntityKind()) {
        case SIMPLE:
            for (int i = 0; i < entity.wSize(); i++) resultObject.add(ef.createPair(ef.createName(entity.wGetFeatureDescriptor(i).getName()), encode(entity.wGet(i))));
            break;
        case COMPOSITE:
            org.whole.lang.json.model.Array arrayLiteral = ef.createArray(entity.wSize());
            resultObject.add(ef.createPair(ef.createName(ed.getCompositeKind().isOrdered() ? "@list" : "@set"), arrayLiteral));
            for (int i = 0; i < entity.wSize(); i++) arrayLiteral.add(encode(entity.wGet(i)));
            break;
        default:
        case DATA:
            Value value = null;
            switch(ed.getDataKind()) {
                case BOOLEAN:
                    value = ef.createBool(entity.wBooleanValue());
                    break;
                case BYTE:
                    value = ef.createInt(entity.wByteValue());
                    break;
                case SHORT:
                    value = ef.createInt(entity.wShortValue());
                    break;
                case INT:
                    value = ef.createInt(entity.wIntValue());
                    break;
                case LONG:
                    value = ef.createInt(entity.wLongValue());
                    break;
                case FLOAT:
                    value = ef.createDecimal(entity.wFloatValue());
                    break;
                case DOUBLE:
                    value = ef.createDecimal(entity.wDoubleValue());
                    break;
                case STRING:
                    value = ef.createString(entity.wStringValue());
                    break;
                default:
                    value = ef.createString(DataTypeUtils.getAsPersistenceString(entity));
            }
            resultObject.add(ef.createPair(ef.createName("@value"), value));
    }
    return resultObject;
}
Also used : JSONEntityFactory(org.whole.lang.json.factories.JSONEntityFactory) Value(org.whole.lang.json.model.Value)

Aggregations

Value (org.whole.lang.json.model.Value)4 Pair (org.whole.lang.json.model.Pair)2 IEntity (org.whole.lang.model.IEntity)2 HashMap (java.util.HashMap)1 IEntityFactory (org.whole.lang.factories.IEntityFactory)1 JSONEntityFactory (org.whole.lang.json.factories.JSONEntityFactory)1 FeatureDescriptor (org.whole.lang.reflect.FeatureDescriptor)1 FeatureDescriptorEnum (org.whole.lang.reflect.FeatureDescriptorEnum)1