/// <summary>
 /// This function permits to add a clause in WHERE or HAVING.
 /// </summary>
 /// <param name="builderFromAndNode"></param>
 /// <param name="ConditionOperatorEnum"></param>
 /// <param name="elements"></param>
 private static void AddClause(object builderFromAndNode, ConditionOperatorEnum conditionOperator, string[] elements)
 {
     if (builderFromAndNode is Where)
     {
         ((Where)builderFromAndNode).AddAnd(elements[0], conditionOperator, elements[2]);
     }
     else if (builderFromAndNode is Having)
     {
         ((Having)builderFromAndNode).AddAnd(elements[0], conditionOperator, elements[2]);
     }
 }
        public Not(SqlRawBuilder sqlRawBuilder, string field, ConditionOperatorEnum operatorEnum, string value)
        {
            this.sqlRawBuilder = sqlRawBuilder;
            this.field         = field;

            if (this.sqlRawBuilder.HasCondition)
            {
                this.sqlRawBuilder.GetSQL += " NOT ";
            }
            this.sqlRawBuilder.GetSQL      += (new FormatCondition(field, operatorEnum, value)).Raw;
            this.sqlRawBuilder.HasCondition = true;
        }
        public OrCommand(SqlRawBuilder sqlRawBuilder, string field, ConditionOperatorEnum conditionOperator, string value)
        {
            this.sqlRawBuilder     = sqlRawBuilder;
            this.field             = field;
            this.conditionOperator = conditionOperator;
            this.value             = value;

            if (this.sqlRawBuilder.HasCondition)
            {
                this.sqlRawBuilder.GetSQL += " OR ";
            }
            this.sqlRawBuilder.GetSQL      += new FormatCondition(field, conditionOperator, value).Raw;
            this.sqlRawBuilder.HasCondition = true;
        }
        public FormatCondition(string field, ConditionOperatorEnum operatorEnum, string value)
        {
            this.field        = field;
            this.operatorEnum = operatorEnum;
            this.value        = value;

            switch (operatorEnum)
            {
            case ConditionOperatorEnum.EqualsTo:
                Raw = field + " = '" + value + "'"
                ; break;

            case ConditionOperatorEnum.GreaterThan:
                Raw = field + " > '" + value + "'"
                ; break;

            case ConditionOperatorEnum.GreaterOrEquals:
                Raw = field + " >= '" + value + "'"
                ; break;

            case ConditionOperatorEnum.LowerThan:
                Raw = field + " < '" + value + "'"
                ; break;

            case ConditionOperatorEnum.LowerOrEquals:
                Raw = field + " <= '" + value + "'"
                ; break;

            case ConditionOperatorEnum.NotEqualsTo:
                Raw = field + " <> '" + value + "'"
                ; break;

            case ConditionOperatorEnum.StartWith:
                Raw = field + " LIKE '" + value + "%'"
                ; break;

            case ConditionOperatorEnum.EndWith:
                Raw = field + " LIKE '%" + value + "'"
                ; break;

            case ConditionOperatorEnum.Contains:
                Raw = field + " LIKE '%" + value + "%'"
                ; break;

            case ConditionOperatorEnum.NotContains:
                Raw = field + " NOT LIKE '%" + value + "%'"
                ; break;
            }
        }
 public And AddAnd(string field, ConditionOperatorEnum operatorEnum, string value)
 {
     return(new And(sqlRawBuilder, field, operatorEnum, value));
 }
 public Or AddOr(string field, ConditionOperatorEnum operatorEnum, string value)
 {
     return(new Or(sqlRawBuilder, field, operatorEnum, value));
 }
 public Not AddNot(string field, ConditionOperatorEnum conditionOperator, string value)
 {
     return(new Not(sqlRawBuilder, field, conditionOperator, value));
 }
 public AndCommand AddAnd(string field, ConditionOperatorEnum conditionOperator, string value)
 {
     return(new AndCommand(sqlRawBuilder, field, conditionOperator, value));
 }