Search in sources :

Example 11 with Function

use of jakarta.nosql.query.Function in project jnosql-diana by eclipse.

the class Values method get.

private static Object get(QueryValue<?> value, Params parameters) {
    ValueType type = value.getType();
    switch(type) {
        case NUMBER:
        case STRING:
            return value.get();
        case PARAMETER:
            return parameters.add(ParamQueryValue.class.cast(value).get());
        case ARRAY:
            return Stream.of(ArrayQueryValue.class.cast(value).get()).map(v -> get(v, parameters)).collect(toList());
        case FUNCTION:
            Function function = FunctionQueryValue.class.cast(value).get();
            String name = function.getName();
            Object[] params = function.getParams();
            if ("convert".equals(name)) {
                return executeConvert(parameters, params);
            }
            String message = String.format("There is not support to the function: %s with parameters %s", name, Arrays.toString(params));
            throw new QueryException(message);
        case JSON:
            return JSONQueryValue.class.cast(value).get().toString();
        case CONDITION:
        default:
            throw new QueryException("There is not support to the value: " + type);
    }
}
Also used : ParamQueryValue(jakarta.nosql.query.ParamQueryValue) Arrays(java.util.Arrays) FunctionQueryValue(jakarta.nosql.query.FunctionQueryValue) Value(jakarta.nosql.Value) QueryValue(jakarta.nosql.query.QueryValue) Collectors.toList(java.util.stream.Collectors.toList) Stream(java.util.stream.Stream) ValueType(jakarta.nosql.query.ValueType) ArrayQueryValue(jakarta.nosql.query.ArrayQueryValue) QueryException(jakarta.nosql.QueryException) Function(jakarta.nosql.query.Function) JSONQueryValue(jakarta.nosql.query.JSONQueryValue) Params(jakarta.nosql.Params) Function(jakarta.nosql.query.Function) QueryException(jakarta.nosql.QueryException) ValueType(jakarta.nosql.query.ValueType) FunctionQueryValue(jakarta.nosql.query.FunctionQueryValue)

Example 12 with Function

use of jakarta.nosql.query.Function in project jnosql-diana by eclipse.

the class DefaultFunctionQueryValue method getConverter.

private static FunctionQueryValue getConverter(QueryParser.FunctionContext context) {
    QueryParser.ConvertContext converter = context.convert();
    QueryValue<?> value = Elements.getElement(converter.element());
    String text = converter.name().getText();
    try {
        Object[] params = new Object[] { value, Class.forName(text) };
        Function function1 = DefaultFunction.of("convert", params);
        return new DefaultFunctionQueryValue(function1);
    } catch (ClassNotFoundException e) {
        throw new QueryException("Class does not found the converter function argument: " + text, e);
    }
}
Also used : Function(jakarta.nosql.query.Function) QueryException(jakarta.nosql.QueryException)

Aggregations

Function (jakarta.nosql.query.Function)12 FunctionQueryValue (jakarta.nosql.query.FunctionQueryValue)11 Condition (jakarta.nosql.query.Condition)8 JsonObject (javax.json.JsonObject)8 ParameterizedTest (org.junit.jupiter.params.ParameterizedTest)8 ValueSource (org.junit.jupiter.params.provider.ValueSource)8 JSONQueryValue (jakarta.nosql.query.JSONQueryValue)7 Where (jakarta.nosql.query.Where)6 QueryException (jakarta.nosql.QueryException)4 ConditionQueryValue (jakarta.nosql.query.ConditionQueryValue)4 NumberQueryValue (jakarta.nosql.query.NumberQueryValue)4 StringQueryValue (jakarta.nosql.query.StringQueryValue)4 Params (jakarta.nosql.Params)3 ArrayQueryValue (jakarta.nosql.query.ArrayQueryValue)3 DeleteQuery (jakarta.nosql.query.DeleteQuery)3 ParamQueryValue (jakarta.nosql.query.ParamQueryValue)3 QueryValue (jakarta.nosql.query.QueryValue)3 SelectQuery (jakarta.nosql.query.SelectQuery)3 ValueType (jakarta.nosql.query.ValueType)3 Arrays (java.util.Arrays)3