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

db.sql.api.impl.cmd.condition.Like Maven / Gradle / Ivy

package db.sql.api.impl.cmd.condition;

import db.sql.api.Cmd;
import db.sql.api.SqlBuilderContext;
import db.sql.api.cmd.LikeMode;
import db.sql.api.impl.cmd.Methods;
import db.sql.api.impl.tookit.SqlConst;

public class Like extends BasicCondition {
    private final LikeMode mode;

    public Like(String operator, Cmd key, Cmd value, LikeMode mode) {
        super(operator, key, value);
        this.mode = mode;
    }

    public Like(Cmd key, Cmd value) {
        this(key, value, LikeMode.DEFAULT);
    }

    public Like(Cmd key, String value) {
        this(key, Methods.convert(value), LikeMode.DEFAULT);
    }

    public Like(Cmd key, Cmd value, LikeMode mode) {
        this(SqlConst.LIKE, key, value, mode);
    }

    public Like(Cmd key, String value, LikeMode mode) {
        this(SqlConst.LIKE, key, Methods.convert(value), mode);
    }

    public LikeMode getMode() {
        return mode;
    }

    @Override
    public StringBuilder sql(Cmd module, Cmd parent, SqlBuilderContext context, StringBuilder sqlBuilder) {
        getField().sql(module, this, context, sqlBuilder);
        sqlBuilder.append(getOperator());
        sqlBuilder.append(SqlConst.CONCAT).append(SqlConst.BRACKET_LEFT);

        boolean before = false;
        boolean after = false;

        switch (this.mode) {
            case NONE: {
                break;
            }
            case DEFAULT: {
                before = true;
                after = true;
                break;
            }
            case RIGHT: {
                after = true;
                break;
            }
            default: {
                before = true;
            }
        }
        if (before) {
            sqlBuilder.append(SqlConst.VAGUE_SYMBOL).append(SqlConst.DELIMITER);
        }
        getValue().sql(module, this, context, sqlBuilder);
        if (after) {
            sqlBuilder.append(SqlConst.DELIMITER).append(SqlConst.VAGUE_SYMBOL);
        }
        sqlBuilder.append(SqlConst.BRACKET_RIGHT);
        return sqlBuilder;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy