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;
}
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;
}
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();
}
}
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;
}
Aggregations