package com.yanzuoguang.dao.Impl;

import java.util.ArrayList;
import java.util.List;

/**
 * SQL语句的字段
 */
public class SqlDataField {

    /**
     * 前台参数名称,当没有前台参数时,则把当前字段当常量代码片段处理
     */
    public String paraName = "";
    /**
     * 是否根据前台参数自动添加,false时保持永久添加模式
     */
    public boolean auto = true;
    /**
     * 代码片段
     */
    public List<String> codes = new ArrayList<String>();

    /**
     * 构造函数
     *
     * @param paraName 前台输入字段
     */
    public SqlDataField(String paraName) {
        this(paraName, "");
    }

    /**
     * 构造函数
     *
     * @param paraName 前台输入字段
     * @param cond     条件
     */
    public SqlDataField(String paraName, String cond) {
        this.paraName = paraName;
        this.add(cond);
    }

    /**
     * 复制实体
     *
     * @return
     */
    public SqlDataField copy() {
        SqlDataField to = new SqlDataField(this.paraName);
        to.auto = this.auto;
        to.codes.addAll(this.codes);
        return to;
    }

    /**
     * 添加条件
     *
     * @param cond
     * @return
     */
    public SqlDataField add(String cond) {
        return this.add("{WHERE}", cond);
    }

    /**
     * 添加条件
     *
     * @param codeName  字段名称
     * @param codeValue 代码内容
     * @return
     */
    public SqlDataField add(String codeName, String codeValue) {
        if ("".equals(codeValue) || codeValue == null) {
            return this;
        }
        this.codes.add(codeName);
        this.codes.add(codeValue);
        return this;
    }

    /**
     * 清除所有的代码片段
     *
     * @return
     */
    public SqlDataField clear() {
        this.codes.clear();
        return this;
    }
}