use of org.apache.stanbol.entityhub.servicesapi.query.ValueConstraint.MODE in project stanbol by apache.
the class FieldQueryReader method parseReferenceConstraint.
/**
* @param jConstraint
* @return
* @throws JSONException
*/
private static Constraint parseReferenceConstraint(JSONObject jConstraint, NamespacePrefixService nsPrefixService) throws JSONException {
final List<String> refList;
if (jConstraint.has("value") && !jConstraint.isNull("value")) {
Object value = jConstraint.get("value");
if (value instanceof JSONArray) {
refList = new ArrayList<String>(((JSONArray) value).length());
for (int i = 0; i < ((JSONArray) value).length(); i++) {
String field = ((JSONArray) value).getString(i);
field = field != null ? nsPrefixService.getFullName(field) : null;
if (field != null && !field.isEmpty()) {
refList.add(field);
}
}
} else if (value instanceof JSONObject) {
log.warn("Parsed ValueConstraint does define illegal values (values={})!", value);
StringBuilder message = new StringBuilder();
message.append("Parsed ValueConstraint does define illegal value for field 'value'" + "(value MUST NOT be an JSON object. Only values and JSONArray to parse" + "multiple values are allowed)!\n");
message.append("Parsed Constraint: \n");
message.append(jConstraint.toString(4));
throw new IllegalArgumentException(message.toString());
} else {
String field = jConstraint.getString("value");
field = field != null ? nsPrefixService.getFullName(field) : null;
if (field != null) {
refList = Collections.singletonList(field);
} else {
refList = Collections.emptyList();
}
}
if (refList.isEmpty()) {
log.warn("Parsed ReferenceConstraint does not define a single valid \"value\"!");
StringBuilder message = new StringBuilder();
message.append("Parsed ReferenceConstraint does not define a single valid 'value'!\n");
message.append("This means values where only null, empty string or '{prefix}:{localname}' values with unknown {prefix}\n");
message.append("Parsed Constraint: \n");
message.append(jConstraint.toString(4));
throw new IllegalArgumentException(message.toString());
}
MODE mode = parseConstraintValueMode(jConstraint);
return new ReferenceConstraint(refList, mode);
} else {
log.warn("Parsed ReferenceConstraint does not define the required field \"value\"!");
StringBuilder message = new StringBuilder();
message.append("Parsed ReferenceConstraint does not define the required field 'value'!\n");
message.append("Parsed Constraint: \n");
message.append(jConstraint.toString(4));
throw new IllegalArgumentException(message.toString());
}
}
use of org.apache.stanbol.entityhub.servicesapi.query.ValueConstraint.MODE in project stanbol by apache.
the class FieldQueryReader method parseValueConstraint.
/**
* @param jConstraint
* @return
* @throws JSONException
*/
private static Constraint parseValueConstraint(JSONObject jConstraint, NamespacePrefixService nsPrefixService) throws JSONException {
Collection<String> dataTypes = parseDatatypeProperty(jConstraint, nsPrefixService);
final List<Object> valueList;
if (jConstraint.has("value") && !jConstraint.isNull("value")) {
Object value = jConstraint.get("value");
if (value instanceof JSONArray) {
valueList = new ArrayList<Object>(((JSONArray) value).length());
for (int i = 0; i < ((JSONArray) value).length(); i++) {
Object v = ((JSONArray) value).get(i);
if (v == null || v instanceof JSONArray || v instanceof JSONObject) {
log.warn("Parsed ValueConstraint does define illegal values (values={})!", value);
StringBuilder message = new StringBuilder();
message.append("Parsed ValueConstraint does define illegal values for field 'value'" + "(value MUST NOT contain NULL, JSONObject nor JSONArray values)!\n");
message.append("Parsed Constraint: \n");
message.append(jConstraint.toString(4));
throw new IllegalArgumentException(message.toString());
}
valueList.add(v);
}
} else if (value instanceof JSONObject) {
log.warn("Parsed ValueConstraint does define illegal values (values={})!", value);
StringBuilder message = new StringBuilder();
message.append("Parsed ValueConstraint does define illegal value for field 'value'" + "(value MUST NOT be an JSON object. Only values and JSONArray to parse" + "multiple values are allowed)!\n");
message.append("Parsed Constraint: \n");
message.append(jConstraint.toString(4));
throw new IllegalArgumentException(message.toString());
} else {
valueList = Collections.singletonList(jConstraint.get("value"));
}
} else {
log.warn("Parsed ValueConstraint does not define the required field \"value\"!");
StringBuilder message = new StringBuilder();
message.append("Parsed ValueConstraint does not define the required field 'value'!\n");
message.append("Parsed Constraint: \n");
message.append(jConstraint.toString(4));
throw new IllegalArgumentException(message.toString());
}
MODE mode = parseConstraintValueMode(jConstraint);
return new ValueConstraint(valueList, dataTypes, mode);
}
Aggregations