Search in sources :

Example 1 with MODE

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());
    }
}
Also used : JSONObject(org.codehaus.jettison.json.JSONObject) MODE(org.apache.stanbol.entityhub.servicesapi.query.ValueConstraint.MODE) JSONArray(org.codehaus.jettison.json.JSONArray) JSONObject(org.codehaus.jettison.json.JSONObject) ReferenceConstraint(org.apache.stanbol.entityhub.servicesapi.query.ReferenceConstraint) ValueConstraint(org.apache.stanbol.entityhub.servicesapi.query.ValueConstraint) Constraint(org.apache.stanbol.entityhub.servicesapi.query.Constraint) TextConstraint(org.apache.stanbol.entityhub.servicesapi.query.TextConstraint) ReferenceConstraint(org.apache.stanbol.entityhub.servicesapi.query.ReferenceConstraint) SimilarityConstraint(org.apache.stanbol.entityhub.servicesapi.query.SimilarityConstraint) RangeConstraint(org.apache.stanbol.entityhub.servicesapi.query.RangeConstraint)

Example 2 with MODE

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);
}
Also used : JSONObject(org.codehaus.jettison.json.JSONObject) MODE(org.apache.stanbol.entityhub.servicesapi.query.ValueConstraint.MODE) ValueConstraint(org.apache.stanbol.entityhub.servicesapi.query.ValueConstraint) JSONArray(org.codehaus.jettison.json.JSONArray) JSONObject(org.codehaus.jettison.json.JSONObject) ValueConstraint(org.apache.stanbol.entityhub.servicesapi.query.ValueConstraint) Constraint(org.apache.stanbol.entityhub.servicesapi.query.Constraint) TextConstraint(org.apache.stanbol.entityhub.servicesapi.query.TextConstraint) ReferenceConstraint(org.apache.stanbol.entityhub.servicesapi.query.ReferenceConstraint) SimilarityConstraint(org.apache.stanbol.entityhub.servicesapi.query.SimilarityConstraint) RangeConstraint(org.apache.stanbol.entityhub.servicesapi.query.RangeConstraint)

Aggregations

Constraint (org.apache.stanbol.entityhub.servicesapi.query.Constraint)2 RangeConstraint (org.apache.stanbol.entityhub.servicesapi.query.RangeConstraint)2 ReferenceConstraint (org.apache.stanbol.entityhub.servicesapi.query.ReferenceConstraint)2 SimilarityConstraint (org.apache.stanbol.entityhub.servicesapi.query.SimilarityConstraint)2 TextConstraint (org.apache.stanbol.entityhub.servicesapi.query.TextConstraint)2 ValueConstraint (org.apache.stanbol.entityhub.servicesapi.query.ValueConstraint)2 MODE (org.apache.stanbol.entityhub.servicesapi.query.ValueConstraint.MODE)2 JSONArray (org.codehaus.jettison.json.JSONArray)2 JSONObject (org.codehaus.jettison.json.JSONObject)2