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

io.github.wujun728.sql.node.TrimSqlNode Maven / Gradle / Ivy

package io.github.wujun728.sql.node;

import org.apache.commons.lang3.StringUtils;

import io.github.wujun728.sql.context.Context;

import java.util.List;
import java.util.Set;


public class TrimSqlNode implements SqlNode {

    SqlNode contents;
    String prefix;
    String suffix;
    List prefixesToOverride;
    List suffixesToOverride;

    public TrimSqlNode(SqlNode contents, String prefix, String suffix, List prefixesToOverride, List suffixesToOverride) {
        this.contents = contents;
        this.prefix = prefix;
        this.suffix = suffix;
        this.prefixesToOverride = prefixesToOverride;
        this.suffixesToOverride = suffixesToOverride;
    }

    @Override
    public void apply(Context context) {
        context.appendSql(" ");//标签类SqlNode先拼接空格,和前面的内容隔开
        Context proxy = new Context(context.getData());
//        FilterContext filterContext = new FilterContext(context);
        contents.apply(proxy);
        String sql = proxy.getSql().trim();

        if (sql.length() > 0) {
            if (prefixesToOverride != null)
                for (String key : prefixesToOverride) {
                    if (sql.startsWith(key)) {
                        sql = sql.substring(key.length());
                    }
                }
            if (suffixesToOverride != null)
                for (String key : suffixesToOverride) {
                    if (sql.endsWith(key)) {
                        sql = sql.substring(0, sql.length() - key.length());
                    }
                }
        }

        if (StringUtils.isNotBlank(sql) && StringUtils.isNotBlank(prefix)) {
            context.appendSql(prefix);
        }

        context.appendSql(sql);

        if (StringUtils.isNotBlank(sql) && StringUtils.isNotBlank(suffix)) {
            context.appendSql(suffix);
        }

    }

    @Override
    public void applyParameter(Set set) {
        contents.applyParameter(set);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy