Search in sources :

Example 1 with JSONEntityFactory

use of org.whole.lang.json.factories.JSONEntityFactory 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)

Example 2 with JSONEntityFactory

use of org.whole.lang.json.factories.JSONEntityFactory in project whole by wholeplatform.

the class JSONUtils method set.

public static void set(IEntity entity, String name, Value value) {
    if (!Matcher.matchImpl(JSONEntityDescriptorEnum.Object, entity))
        throw new IllegalArgumentException();
    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);
        if (pair.getName().getValue().equals(name)) {
            pair.setValue(value);
            return;
        }
    }
    JSONEntityFactory ef = JSONEntityFactory.instance;
    object.add(ef.createPair(ef.createName(name), value));
}
Also used : JSONEntityFactory(org.whole.lang.json.factories.JSONEntityFactory) Pair(org.whole.lang.json.model.Pair)

Aggregations

JSONEntityFactory (org.whole.lang.json.factories.JSONEntityFactory)2 Pair (org.whole.lang.json.model.Pair)1 Value (org.whole.lang.json.model.Value)1