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

com.easy.query.core.proxy.SQLMathExpression Maven / Gradle / Ivy

package com.easy.query.core.proxy;

import com.easy.query.core.func.def.enums.MathMethodEnum;
import com.easy.query.core.proxy.extension.functions.executor.ColumnFunctionCompareComparableNumberChainExpression;
import com.easy.query.core.proxy.extension.functions.executor.impl.ColumnFunctionCompareComparableNumberChainExpressionImpl;

import java.math.BigDecimal;

/**
 * create time 2024/2/21 10:58
 * 文件说明
 *
 * @author xuejiaming
 */
public interface SQLMathExpression {

    static   ColumnFunctionCompareComparableNumberChainExpression abs(PropTypeColumn propTypeColumn) {
        return new ColumnFunctionCompareComparableNumberChainExpressionImpl<>(propTypeColumn.getEntitySQLContext(), propTypeColumn.getTable(), propTypeColumn.getValue(), fx -> {
            return fx.math(o -> {
                PropTypeColumn.columnFuncSelector(o,propTypeColumn);
            }, MathMethodEnum.Abs);
        }, propTypeColumn.getPropertyType());
    }

    /**
     * 是一种数学类方法,该方法返回一个整数,该整数指定数字的符号
     *
     * @param propTypeColumn
     * @return 如果值等于零返回0,如果值大于零返回1,如果值小于零返回-1
     * @param 
     */
    static  ColumnFunctionCompareComparableNumberChainExpression sign(PropTypeColumn propTypeColumn) {
        return new ColumnFunctionCompareComparableNumberChainExpressionImpl<>(propTypeColumn.getEntitySQLContext(), propTypeColumn.getTable(), propTypeColumn.getValue(), fx -> {
            return fx.math(o -> {
                PropTypeColumn.columnFuncSelector(o,propTypeColumn);
            }, MathMethodEnum.Abs);
        }, Integer.class);
    }

    /**
     * 向下取整
     * @param propTypeColumn
     * @return
     * @param 
     */
    static  ColumnFunctionCompareComparableNumberChainExpression floor(PropTypeColumn propTypeColumn) {
        return new ColumnFunctionCompareComparableNumberChainExpressionImpl<>(propTypeColumn.getEntitySQLContext(), propTypeColumn.getTable(), propTypeColumn.getValue(), fx -> {
            return fx.math(o -> {
                PropTypeColumn.columnFuncSelector(o,propTypeColumn);
            }, MathMethodEnum.Floor);
        }, propTypeColumn.getPropertyType());
    }

    /**
     * 向上取整
     * @return
     */
    static  ColumnFunctionCompareComparableNumberChainExpression ceiling(PropTypeColumn propTypeColumn) {
        return new ColumnFunctionCompareComparableNumberChainExpressionImpl<>(propTypeColumn.getEntitySQLContext(), propTypeColumn.getTable(), propTypeColumn.getValue(), fx -> {
            return fx.math(o -> {
                PropTypeColumn.columnFuncSelector(o,propTypeColumn);
            }, MathMethodEnum.Ceiling);
        }, propTypeColumn.getPropertyType());
    }

    /**
     * 四舍五入
     * @param propTypeColumn
     * @return
     * @param 
     */
    static  ColumnFunctionCompareComparableNumberChainExpression round(PropTypeColumn propTypeColumn) {
        return new ColumnFunctionCompareComparableNumberChainExpressionImpl<>(propTypeColumn.getEntitySQLContext(), propTypeColumn.getTable(), propTypeColumn.getValue(), fx -> {
            return fx.math(o -> {
                PropTypeColumn.columnFuncSelector(o,propTypeColumn);
            }, MathMethodEnum.Round);
        }, BigDecimal.class);
    }

    /**
     * 四舍五入
     * @param propTypeColumn
     * @param decimals
     * @return
     * @param 
     */
    static  ColumnFunctionCompareComparableNumberChainExpression round(PropTypeColumn propTypeColumn, int decimals) {
        return new ColumnFunctionCompareComparableNumberChainExpressionImpl<>(propTypeColumn.getEntitySQLContext(), propTypeColumn.getTable(), propTypeColumn.getValue(), fx -> {
            return fx.math(o -> {
                PropTypeColumn.columnFuncSelector(o,propTypeColumn);
                o.value(decimals);
            }, MathMethodEnum.Round);
        }, BigDecimal.class);
    }

    /**
     * 指定幂的数字 d
     * @param propTypeColumn d
     * @return 数字 e 的 d 次幂。
     * @param 
     */
    static  ColumnFunctionCompareComparableNumberChainExpression exp(PropTypeColumn propTypeColumn) {
        return new ColumnFunctionCompareComparableNumberChainExpressionImpl<>(propTypeColumn.getEntitySQLContext(), propTypeColumn.getTable(), propTypeColumn.getValue(), fx -> {
            return fx.math(o -> {
                PropTypeColumn.columnFuncSelector(o,propTypeColumn);
            }, MathMethodEnum.Exp);
        }, BigDecimal.class);
    }

    /**
     * 要查找其对数的数字。
     * @param propTypeColumn d
     * @return d 参数 正 d 的自然对数,即 ln d 或 log ed 零
     * @param 
     */
    static  ColumnFunctionCompareComparableNumberChainExpression log(PropTypeColumn propTypeColumn) {
        return new ColumnFunctionCompareComparableNumberChainExpressionImpl<>(propTypeColumn.getEntitySQLContext(), propTypeColumn.getTable(), propTypeColumn.getValue(), fx -> {
            return fx.math(o -> {
                PropTypeColumn.columnFuncSelector(o,propTypeColumn);
            }, MathMethodEnum.Log);
        }, BigDecimal.class);
    }
    static  ColumnFunctionCompareComparableNumberChainExpression log(PropTypeColumn propTypeColumn, BigDecimal newBase) {
        return new ColumnFunctionCompareComparableNumberChainExpressionImpl<>(propTypeColumn.getEntitySQLContext(), propTypeColumn.getTable(), propTypeColumn.getValue(), fx -> {
            return fx.math(o -> {
                PropTypeColumn.columnFuncSelector(o,propTypeColumn);
                o.value(newBase);
            }, MathMethodEnum.Log);
        }, BigDecimal.class);
    }
    default  ColumnFunctionCompareComparableNumberChainExpression log10(PropTypeColumn propTypeColumn) {
        return new ColumnFunctionCompareComparableNumberChainExpressionImpl<>(propTypeColumn.getEntitySQLContext(), propTypeColumn.getTable(), propTypeColumn.getValue(), fx -> {
            return fx.math(o -> {
                PropTypeColumn.columnFuncSelector(o,propTypeColumn);
            }, MathMethodEnum.Log10);
        }, BigDecimal.class);
    }
    default  ColumnFunctionCompareComparableNumberChainExpression pow(PropTypeColumn propTypeColumn) {
        return new ColumnFunctionCompareComparableNumberChainExpressionImpl<>(propTypeColumn.getEntitySQLContext(), propTypeColumn.getTable(), propTypeColumn.getValue(), fx -> {
            return fx.math(o -> {
                PropTypeColumn.columnFuncSelector(o,propTypeColumn);
            }, MathMethodEnum.Pow);
        }, BigDecimal.class);
    }
    default  ColumnFunctionCompareComparableNumberChainExpression pow(PropTypeColumn propTypeColumn, BigDecimal exponent) {
        return new ColumnFunctionCompareComparableNumberChainExpressionImpl<>(propTypeColumn.getEntitySQLContext(), propTypeColumn.getTable(), propTypeColumn.getValue(), fx -> {
            return fx.math(o -> {
                PropTypeColumn.columnFuncSelector(o,propTypeColumn);
                o.value(exponent);
            }, MathMethodEnum.Pow);
        }, BigDecimal.class);
    }
    default  ColumnFunctionCompareComparableNumberChainExpression sqrt(PropTypeColumn propTypeColumn) {
        return new ColumnFunctionCompareComparableNumberChainExpressionImpl<>(propTypeColumn.getEntitySQLContext(), propTypeColumn.getTable(), propTypeColumn.getValue(), fx -> {
            return fx.math(o -> {
                PropTypeColumn.columnFuncSelector(o,propTypeColumn);
            }, MathMethodEnum.Sqrt);
        }, BigDecimal.class);
    }
    default  ColumnFunctionCompareComparableNumberChainExpression cos(PropTypeColumn propTypeColumn) {
        return new ColumnFunctionCompareComparableNumberChainExpressionImpl<>(propTypeColumn.getEntitySQLContext(), propTypeColumn.getTable(), propTypeColumn.getValue(), fx -> {
            return fx.math(o -> {
                PropTypeColumn.columnFuncSelector(o,propTypeColumn);
            }, MathMethodEnum.Cos);
        }, BigDecimal.class);
    }
    default  ColumnFunctionCompareComparableNumberChainExpression sin(PropTypeColumn propTypeColumn) {
        return new ColumnFunctionCompareComparableNumberChainExpressionImpl<>(propTypeColumn.getEntitySQLContext(), propTypeColumn.getTable(), propTypeColumn.getValue(), fx -> {
            return fx.math(o -> {
                PropTypeColumn.columnFuncSelector(o,propTypeColumn);
            }, MathMethodEnum.Sin);
        }, BigDecimal.class);
    }
    default  ColumnFunctionCompareComparableNumberChainExpression tan(PropTypeColumn propTypeColumn) {
        return new ColumnFunctionCompareComparableNumberChainExpressionImpl<>(propTypeColumn.getEntitySQLContext(), propTypeColumn.getTable(), propTypeColumn.getValue(), fx -> {
            return fx.math(o -> {
                PropTypeColumn.columnFuncSelector(o,propTypeColumn);
            }, MathMethodEnum.Tan);
        }, BigDecimal.class);
    }
    default  ColumnFunctionCompareComparableNumberChainExpression acos(PropTypeColumn propTypeColumn) {
        return new ColumnFunctionCompareComparableNumberChainExpressionImpl<>(propTypeColumn.getEntitySQLContext(), propTypeColumn.getTable(), propTypeColumn.getValue(), fx -> {
            return fx.math(o -> {
                PropTypeColumn.columnFuncSelector(o,propTypeColumn);
            }, MathMethodEnum.Acos);
        }, BigDecimal.class);
    }
    default  ColumnFunctionCompareComparableNumberChainExpression asin(PropTypeColumn propTypeColumn) {
        return new ColumnFunctionCompareComparableNumberChainExpressionImpl<>(propTypeColumn.getEntitySQLContext(), propTypeColumn.getTable(), propTypeColumn.getValue(), fx -> {
            return fx.math(o -> {
                PropTypeColumn.columnFuncSelector(o,propTypeColumn);
            }, MathMethodEnum.Asin);
        }, BigDecimal.class);
    }
    default  ColumnFunctionCompareComparableNumberChainExpression atan(PropTypeColumn propTypeColumn) {
        return new ColumnFunctionCompareComparableNumberChainExpressionImpl<>(propTypeColumn.getEntitySQLContext(), propTypeColumn.getTable(), propTypeColumn.getValue(), fx -> {
            return fx.math(o -> {
                PropTypeColumn.columnFuncSelector(o,propTypeColumn);
            }, MathMethodEnum.Atan);
        }, BigDecimal.class);
    }
    default  ColumnFunctionCompareComparableNumberChainExpression atan2(PropTypeColumn propTypeColumn) {
        return new ColumnFunctionCompareComparableNumberChainExpressionImpl<>(propTypeColumn.getEntitySQLContext(), propTypeColumn.getTable(), propTypeColumn.getValue(), fx -> {
            return fx.math(o -> {
                PropTypeColumn.columnFuncSelector(o,propTypeColumn);
            }, MathMethodEnum.Atan2);
        }, BigDecimal.class);
    }
    default  ColumnFunctionCompareComparableNumberChainExpression truncate(PropTypeColumn propTypeColumn) {
        return new ColumnFunctionCompareComparableNumberChainExpressionImpl<>(propTypeColumn.getEntitySQLContext(), propTypeColumn.getTable(), propTypeColumn.getValue(), fx -> {
            return fx.math(o -> {
                PropTypeColumn.columnFuncSelector(o,propTypeColumn);
            }, MathMethodEnum.Truncate);
        }, BigDecimal.class);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy