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.ColumnFunctionComparableNumberChainExpression;
import com.easy.query.core.proxy.extension.functions.executor.impl.ColumnFunctionComparableNumberChainExpressionImpl;

import java.math.BigDecimal;

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

    static   ColumnFunctionComparableNumberChainExpression abs(PropTypeColumn propTypeColumn) {
        return new ColumnFunctionComparableNumberChainExpressionImpl<>(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  ColumnFunctionComparableNumberChainExpression sign(PropTypeColumn propTypeColumn) {
        return new ColumnFunctionComparableNumberChainExpressionImpl<>(propTypeColumn.getEntitySQLContext(), propTypeColumn.getTable(), propTypeColumn.getValue(), fx -> {
            return fx.math(o -> {
                PropTypeColumn.columnFuncSelector(o,propTypeColumn);
            }, MathMethodEnum.Abs);
        }, Integer.class);
    }

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

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

    /**
     * 四舍五入
     * @param propTypeColumn
     * @return
     * @param 
     */
    static  ColumnFunctionComparableNumberChainExpression round(PropTypeColumn propTypeColumn) {
        return new ColumnFunctionComparableNumberChainExpressionImpl<>(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  ColumnFunctionComparableNumberChainExpression round(PropTypeColumn propTypeColumn,int decimals) {
        return new ColumnFunctionComparableNumberChainExpressionImpl<>(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  ColumnFunctionComparableNumberChainExpression exp(PropTypeColumn propTypeColumn) {
        return new ColumnFunctionComparableNumberChainExpressionImpl<>(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  ColumnFunctionComparableNumberChainExpression log(PropTypeColumn propTypeColumn) {
        return new ColumnFunctionComparableNumberChainExpressionImpl<>(propTypeColumn.getEntitySQLContext(), propTypeColumn.getTable(), propTypeColumn.getValue(), fx -> {
            return fx.math(o -> {
                PropTypeColumn.columnFuncSelector(o,propTypeColumn);
            }, MathMethodEnum.Log);
        }, BigDecimal.class);
    }
    static  ColumnFunctionComparableNumberChainExpression log(PropTypeColumn propTypeColumn,BigDecimal newBase) {
        return new ColumnFunctionComparableNumberChainExpressionImpl<>(propTypeColumn.getEntitySQLContext(), propTypeColumn.getTable(), propTypeColumn.getValue(), fx -> {
            return fx.math(o -> {
                PropTypeColumn.columnFuncSelector(o,propTypeColumn);
                o.value(newBase);
            }, MathMethodEnum.Log);
        }, BigDecimal.class);
    }
    default  ColumnFunctionComparableNumberChainExpression log10(PropTypeColumn propTypeColumn) {
        return new ColumnFunctionComparableNumberChainExpressionImpl<>(propTypeColumn.getEntitySQLContext(), propTypeColumn.getTable(), propTypeColumn.getValue(), fx -> {
            return fx.math(o -> {
                PropTypeColumn.columnFuncSelector(o,propTypeColumn);
            }, MathMethodEnum.Log10);
        }, BigDecimal.class);
    }
    default  ColumnFunctionComparableNumberChainExpression pow(PropTypeColumn propTypeColumn) {
        return new ColumnFunctionComparableNumberChainExpressionImpl<>(propTypeColumn.getEntitySQLContext(), propTypeColumn.getTable(), propTypeColumn.getValue(), fx -> {
            return fx.math(o -> {
                PropTypeColumn.columnFuncSelector(o,propTypeColumn);
            }, MathMethodEnum.Pow);
        }, BigDecimal.class);
    }
    default  ColumnFunctionComparableNumberChainExpression pow(PropTypeColumn propTypeColumn,BigDecimal exponent) {
        return new ColumnFunctionComparableNumberChainExpressionImpl<>(propTypeColumn.getEntitySQLContext(), propTypeColumn.getTable(), propTypeColumn.getValue(), fx -> {
            return fx.math(o -> {
                PropTypeColumn.columnFuncSelector(o,propTypeColumn);
                o.value(exponent);
            }, MathMethodEnum.Pow);
        }, BigDecimal.class);
    }
    default   ColumnFunctionComparableNumberChainExpression sqrt(PropTypeColumn propTypeColumn) {
        return new ColumnFunctionComparableNumberChainExpressionImpl<>(propTypeColumn.getEntitySQLContext(), propTypeColumn.getTable(), propTypeColumn.getValue(), fx -> {
            return fx.math(o -> {
                PropTypeColumn.columnFuncSelector(o,propTypeColumn);
            }, MathMethodEnum.Sqrt);
        }, BigDecimal.class);
    }
    default  ColumnFunctionComparableNumberChainExpression cos(PropTypeColumn propTypeColumn) {
        return new ColumnFunctionComparableNumberChainExpressionImpl<>(propTypeColumn.getEntitySQLContext(), propTypeColumn.getTable(), propTypeColumn.getValue(), fx -> {
            return fx.math(o -> {
                PropTypeColumn.columnFuncSelector(o,propTypeColumn);
            }, MathMethodEnum.Cos);
        }, BigDecimal.class);
    }
    default  ColumnFunctionComparableNumberChainExpression sin(PropTypeColumn propTypeColumn) {
        return new ColumnFunctionComparableNumberChainExpressionImpl<>(propTypeColumn.getEntitySQLContext(), propTypeColumn.getTable(), propTypeColumn.getValue(), fx -> {
            return fx.math(o -> {
                PropTypeColumn.columnFuncSelector(o,propTypeColumn);
            }, MathMethodEnum.Sin);
        }, BigDecimal.class);
    }
    default  ColumnFunctionComparableNumberChainExpression tan(PropTypeColumn propTypeColumn) {
        return new ColumnFunctionComparableNumberChainExpressionImpl<>(propTypeColumn.getEntitySQLContext(), propTypeColumn.getTable(), propTypeColumn.getValue(), fx -> {
            return fx.math(o -> {
                PropTypeColumn.columnFuncSelector(o,propTypeColumn);
            }, MathMethodEnum.Tan);
        }, BigDecimal.class);
    }
    default  ColumnFunctionComparableNumberChainExpression acos(PropTypeColumn propTypeColumn) {
        return new ColumnFunctionComparableNumberChainExpressionImpl<>(propTypeColumn.getEntitySQLContext(), propTypeColumn.getTable(), propTypeColumn.getValue(), fx -> {
            return fx.math(o -> {
                PropTypeColumn.columnFuncSelector(o,propTypeColumn);
            }, MathMethodEnum.Acos);
        }, BigDecimal.class);
    }
    default  ColumnFunctionComparableNumberChainExpression asin(PropTypeColumn propTypeColumn) {
        return new ColumnFunctionComparableNumberChainExpressionImpl<>(propTypeColumn.getEntitySQLContext(), propTypeColumn.getTable(), propTypeColumn.getValue(), fx -> {
            return fx.math(o -> {
                PropTypeColumn.columnFuncSelector(o,propTypeColumn);
            }, MathMethodEnum.Asin);
        }, BigDecimal.class);
    }
    default  ColumnFunctionComparableNumberChainExpression atan(PropTypeColumn propTypeColumn) {
        return new ColumnFunctionComparableNumberChainExpressionImpl<>(propTypeColumn.getEntitySQLContext(), propTypeColumn.getTable(), propTypeColumn.getValue(), fx -> {
            return fx.math(o -> {
                PropTypeColumn.columnFuncSelector(o,propTypeColumn);
            }, MathMethodEnum.Atan);
        }, BigDecimal.class);
    }
    default  ColumnFunctionComparableNumberChainExpression atan2(PropTypeColumn propTypeColumn) {
        return new ColumnFunctionComparableNumberChainExpressionImpl<>(propTypeColumn.getEntitySQLContext(), propTypeColumn.getTable(), propTypeColumn.getValue(), fx -> {
            return fx.math(o -> {
                PropTypeColumn.columnFuncSelector(o,propTypeColumn);
            }, MathMethodEnum.Atan2);
        }, BigDecimal.class);
    }
    default  ColumnFunctionComparableNumberChainExpression truncate(PropTypeColumn propTypeColumn) {
        return new ColumnFunctionComparableNumberChainExpressionImpl<>(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