package com.yanzuoguang.dao.Impl;

/**
 * @Author : Light_PC
 * @Description :
 * @Date : 2017/12/7 17:36
 * @ModiflyAuthor:
 * @ModiflyDate: 2017/12/7 17:36
 */
public class CaseSqlModel {

    public final static int GroupTypeSUM = 0;
    public final static int GroupTypeCOUNT = 1;
    public final static int GroupTypeAVG = 2;
    public final static int GroupTypeMIN = 3;
    public final static int GroupTypeMAX = 4;

    public CaseSqlModel(String caseField, String caseValue, String valueField, String toName) {
        this(GroupTypeSUM, caseField, caseValue, valueField, toName);
    }

    public CaseSqlModel(int groupType, String caseField, String caseValue, String valueField, String toName) {
        this.GroupType = groupType;
        this.CaseField = caseField;
        this.CaseValue = caseValue;
        this.ValueField = valueField;
        this.ToName = toName;
        this.AndWhere = "";
    }

    public CaseSqlModel(String caseField, String caseValue, Object value, String toName, String andWhere) {
        this(GroupTypeSUM, caseField, caseValue, value, toName, andWhere);
    }

    public CaseSqlModel(int groupType, String caseField, String caseValue, Object value, String toName, String andWhere) {
        this.GroupType = groupType;
        this.CaseField = caseField;
        this.CaseValue = caseValue;
        this.Value = value;
        this.ToName = toName;
        this.AndWhere = andWhere;
    }

    public CaseSqlModel(String caseField, String caseValue, String valueField, String toName, String andWhere) {
        this(GroupTypeSUM, caseField, caseValue, valueField, toName, andWhere);
    }

    public CaseSqlModel(int groupType, String caseField, String caseValue, String valueField, String toName, String andWhere) {
        this.GroupType = groupType;
        this.CaseField = caseField;
        this.CaseValue = caseValue;
        this.ValueField = valueField;
        this.ToName = toName;
        this.AndWhere = andWhere;
    }

    /**
     * 统计纬度
     */
    private int GroupType;

    /**
     * 需要判断的字段
     */
    private String CaseField;

    /**
     * 需要判断的值
     */
    private String CaseValue;

    /**
     * 需要统计的字段,和 Value 只能存在一个,ValueField优先级更高
     */
    private String ValueField;

    /**
     * 需要统计的值,和 ValueField只能存在一个,ValueField优先级更高
     */
    private Object Value;

    /**
     * 目标字段名称
     */
    private String ToName;

    /**
     * 需要判断的CASE字段的附加条件
     */
    private String AndWhere;

    public int getGroupType() {
        return GroupType;
    }

    public void setGroupType(int groupType) {
        GroupType = groupType;
    }

    public String getCaseField() {
        return CaseField;
    }

    public void setCaseField(String caseField) {
        CaseField = caseField;
    }

    public String getCaseValue() {
        return CaseValue;
    }

    public void setCaseValue(String caseValue) {
        CaseValue = caseValue;
    }

    public String getValueField() {
        return ValueField;
    }

    public void setValueField(String valueField) {
        ValueField = valueField;
    }

    public Object getValue() {
        return Value;
    }

    public void setValue(Object value) {
        Value = value;
    }

    public String getToName() {
        return ToName;
    }

    public void setToName(String toName) {
        ToName = toName;
    }

    public String getAndWhere() {
        return AndWhere;
    }

    public void setAndWhere(String andWhere) {
        AndWhere = andWhere;
    }
}