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

com.talanlabs.mybatis.rsql.engine.policy.AlwaysUpperStringPolicy Maven / Gradle / Ivy

The newest version!
package com.talanlabs.mybatis.rsql.engine.policy;

import com.talanlabs.component.IComponent;
import com.talanlabs.mybatis.rsql.engine.IStringPolicy;
import com.talanlabs.mybatis.rsql.sort.SortDirection;
import cz.jirutka.rsql.parser.ast.ComparisonOperator;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.tuple.Pair;

import java.util.List;
import java.util.stream.Collectors;

public class AlwaysUpperStringPolicy implements IStringPolicy {

    private final String upperSqlFunction;

    public AlwaysUpperStringPolicy() {
        this("UPPER");
    }

    public AlwaysUpperStringPolicy(String upperSqlFunction) {
        super();

        this.upperSqlFunction = upperSqlFunction;
    }

    @Override
    public Pair> prepareNameAndParametersForWhere(Class componentClass, String propertyName, ComparisonOperator operator, String name,
            List parameterValues) {
        List ls = null;
        if (parameterValues != null) {
            ls = parameterValues.stream().map(this::upperParameterValue).collect(Collectors.toList());
        }
        return Pair.of(upperName(name), ls);
    }

    @Override
    public String prepareNameForOrderBy(Class componentClass, String propertyName, SortDirection sortDirection, String name) {
        return upperName(name);
    }

    protected String upperName(String name) {
        return upperSqlFunction + "(" + name + ")";
    }

    protected String upperParameterValue(String parameterValue) {
        return StringUtils.upperCase(parameterValue);
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy