
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 extends T> 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 extends T> javaType) {
if (expression.getClass() == ExpressionModel.class) {
return (ExpressionModel) expression;
} else {
return new ExpressionModel<>(expression, javaType);
}
}
public static List> convertExpression(List extends Expression> expression,
Class extends T> 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