All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.alittlehuang.data.query.support.model.ExpressionModel Maven / Gradle / Ivy

package com.github.alittlehuang.data.query.support.model;

import com.github.alittlehuang.data.query.specification.Expression;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serializable;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;

@EqualsAndHashCode(callSuper = true)
@Data
public class ExpressionModel extends AttributePathModel implements Expression, Serializable {

    Object[] args = Expression.EMPTY_ARGS;
    Expression subexpression;
    Function function = Function.NONE;
    String functionName;

    public ExpressionModel() {
    }

    public ExpressionModel(Expression expression, Class javaType) {
        super(expression, javaType);
        this.args = expression.getArgs();
        this.subexpression = expression.getSubexpression();
        this.function = expression.getFunction();
        this.functionName = expression.getFunctionName();
    }

    public static  ExpressionModel convertExpression(Expression expression, Class javaType) {
        if (expression.getClass() == ExpressionModel.class) {
            return (ExpressionModel) expression;
        } else {
            return new ExpressionModel<>(expression, javaType);
        }
    }


    public static  List> convertExpression(List> expression,
                                                                 Class javaType) {

        if (expression == null || expression.isEmpty()) {
            return Collections.emptyList();
        }

        return expression.stream().map(i -> convertExpression(i, javaType)).collect(Collectors.toList());

    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy