Skip to content

Commit

Permalink
Merge pull request #143 from trungdong/dev-json
Browse files Browse the repository at this point in the history
Removed "prov:InternationalizedString" from JSON output (#133)
  • Loading branch information
Luc Moreau committed Aug 11, 2015
2 parents 24f1bfa + ba301a6 commit e5d6e0e
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 51 deletions.
3 changes: 1 addition & 2 deletions prov-json/schema/prov-json-schema-v4.js
Expand Up @@ -35,10 +35,9 @@
"title": "An international string with langtag",
"properties": {
"$": { "type": "string" },
"type": { "type": "string", "format": "uri" },
"lang": { "type": "string" }
},
"required": ["$", "type"],
"required": ["$", "lang"],
"additionalProperties": false
},
"literal-complex": {
Expand Down
Expand Up @@ -206,54 +206,38 @@ private String convertValueToString(Object value, Object convertedValue) {
return (String) value;
}

private Object convertValue(Object value) {
if (value instanceof String || value instanceof Double
|| value instanceof Integer || value instanceof Boolean)
return value;

if (value instanceof QualifiedName) {
return typedLiteral(currentNamespace.qualifiedNameToString((QualifiedName) value),
"prov:QUALIFIED_NAME", null);
}
if (value instanceof LangString) {
LangString iStr = (LangString) value;
String lang = iStr.getLang();
if (lang != null)
// If 'lang' is defined
return typedLiteral(iStr.getValue(),
"prov:InternationalizedString",
lang);
else
return iStr.getValue();
}
throw new RuntimeException("Cannot convert this value: " + value.toString());
private Object convertTypedValue(Object value, QualifiedName type) {
String datatype = currentNamespace.qualifiedNameToString(type);
Object result;
if (value instanceof QualifiedName) {
result = typedLiteral(currentNamespace.qualifiedNameToString((QualifiedName) value), datatype, null);
}
else if (value instanceof LangString) {
LangString iStr = (LangString) value;
String lang = iStr.getLang();
if (lang != null) {
// If 'lang' is defined
result = typedLiteral(iStr.getValue(), null, lang);
}
else {
// Otherwise, just return the string
result = iStr.getValue();
}
}
else {
result = typedLiteral(value.toString(), datatype, null);
}
return result;
}

private Object[] convertAttribute(Attribute attr) {
String attrName = currentNamespace.qualifiedNameToString(attr.getElementName());
Object value = attr.getValue();
QualifiedName type = attr.getType();
String datatype = currentNamespace.qualifiedNameToString(type);
Object attrValue;
if (value instanceof QualifiedName) {
attrValue = typedLiteral(currentNamespace.qualifiedNameToString((QualifiedName) value),
datatype, null);
} else if (value instanceof LangString) {
LangString iStr = (LangString) value;
String lang = iStr.getLang();
if (lang != null) {
// If 'lang' is defined
attrValue = typedLiteral(iStr.getValue(),
"prov:InternationalizedString",
lang);
} else {
// Otherwise, just return the string
attrValue = iStr.getValue();
}
} else {
attrValue = typedLiteral(value.toString(), datatype, null);
}
return tuple(attrName, attrValue);
String attrName = currentNamespace.qualifiedNameToString(attr.getElementName());
Object value = attr.getValue();
QualifiedName type = attr.getType();

Object attrValue = convertTypedValue(value, type);

return tuple(attrName, attrValue);
}

private List<Object[]> convertAttributes(Collection<Attribute> attrs) {
Expand Down Expand Up @@ -656,7 +640,8 @@ private Object encodeKeyEntitySet(List<Entry> keyEntitySet) {
Object entity = currentNamespace.qualifiedNameToString(pair.getEntity());
Map<String, Object> item = new Hashtable<String, Object>();
item.put("$", entity);
item.put("key", convertValue(pair.getKey().getConvertedValue()));
Key key = pair.getKey();
item.put("key", convertTypedValue(key.getValue(), key.getType()));
values.add(item);
}
return values;
Expand Down Expand Up @@ -699,9 +684,7 @@ public DerivedByRemovalFrom newDerivedByRemovalFrom(QualifiedName id,
if (keys != null && !keys.isEmpty()) {
List<Object> values = new ArrayList<Object>(keys.size());
for (Key key : keys) {

values.add(convertValue(key.getValue()));

values.add(convertTypedValue(key.getValue(), key.getType()));
}
attrs.add(tuple("prov:key-set", values));
}
Expand Down

0 comments on commit e5d6e0e

Please sign in to comment.