InsertClause.java

package com.github.mygreen.sqlmapper.core.query;

/**
 * INSERTのINTO句とVALUES句を組み立てるクラスです。
 *
 *
 * @author T.TSUCHIE
 *
 */
public class InsertClause {

    /**
     * INTO句を組み立てる文字列バッファ。
     */
    private final StringBuilder intoSql;

    /**
     * VALUES句を組み立てる文字列バッファ。
     */
    private final StringBuilder valuesSql;

    /**
     * インスタンスを構築します。
     */
    public InsertClause() {
        this.intoSql = new StringBuilder();
        this.valuesSql = new StringBuilder();
    }

    /**
     * インスタンスを構築します。
     * @param capacity 文字列バッファの初期容量。
     */
    public InsertClause(final int capacity) {
        this.intoSql = new StringBuilder();
        this.valuesSql = new StringBuilder();
    }

    /**
     * INTO句をSQLに変換します。
     * @return SQL
     */
    public String toIntoSql() {
        return intoSql.toString();
    }

    /**
     * VALUES句をSQLに変換します。
     * @return SQL
     */
    public String toValuesSql() {
        return valuesSql.toString();
    }

    /**
     * INTO句とVALUES句を追加します。
     * @param columnName VALUES句のカラム名
     * @param expression INSERT句の式
     */
    public void addSql(final String columnName, final String expression) {

        if(intoSql.length() == 0) {
            intoSql.append(" (").append(columnName).append(')');

            valuesSql.append(" values (").append(expression).append(')');

        } else {
            intoSql.setLength(intoSql.length() - 1);
            intoSql.append(", ").append(columnName).append(')');

            valuesSql.setLength(valuesSql.length() - 1);
            valuesSql.append(", ").append(expression).append(')');

        }

    }

}