/// <summary> /// Clones this instance. /// </summary> /// <returns>Returns the cloned object.</returns> public override object Clone() { CellValueCondition condition = base.Clone() as CellValueCondition; condition.compareType = this.compareType; condition.treatNullValueAsZero = this.treatNullValueAsZero; return(condition); }
/// <summary> /// Creates conditions for the rule. /// </summary> /// <returns> /// The condition. /// </returns> protected override ConditionBase CreateCondition() { GeneralCompareType equalsTo; CellValueCondition condition; string formula = IsFormula(this.value1) ? (this.value1 as string).TrimStart(new char[] { '=' }) : null; IsFormula(this.value1); string str2 = IsFormula(this.value2) ? (this.value2 as string).TrimStart(new char[] { '=' }) : null; IsFormula(this.value2); switch (this.op) { case ComparisonOperator.Between: { CellValueCondition condition4 = new CellValueCondition(GeneralCompareType.GreaterThanOrEqualsTo, this.value1, formula) { TreatNullValueAsZero = true }; ConditionBase base2 = condition4; CellValueCondition condition5 = new CellValueCondition(GeneralCompareType.LessThanOrEqualsTo, this.value2, str2) { TreatNullValueAsZero = true }; ConditionBase base3 = condition5; CellValueCondition condition6 = new CellValueCondition(GeneralCompareType.LessThanOrEqualsTo, this.value1, formula) { TreatNullValueAsZero = true }; ConditionBase base4 = condition6; CellValueCondition condition7 = new CellValueCondition(GeneralCompareType.GreaterThanOrEqualsTo, this.value2, str2) { TreatNullValueAsZero = true }; ConditionBase base5 = condition7; RelationCondition condition2 = new RelationCondition(RelationCompareType.And, base2, base3); return(new RelationCondition(RelationCompareType.Or, condition2, new RelationCondition(RelationCompareType.And, base4, base5))); } case ComparisonOperator.NotBetween: { CellValueCondition condition10 = new CellValueCondition(GeneralCompareType.LessThan, this.value1, formula) { TreatNullValueAsZero = true }; ConditionBase base6 = condition10; CellValueCondition condition11 = new CellValueCondition(GeneralCompareType.GreaterThan, this.value2, str2) { TreatNullValueAsZero = true }; ConditionBase base7 = condition11; CellValueCondition condition12 = new CellValueCondition(GeneralCompareType.GreaterThan, this.value1, formula) { TreatNullValueAsZero = true }; ConditionBase base8 = condition12; CellValueCondition condition13 = new CellValueCondition(GeneralCompareType.LessThan, this.value2, str2) { TreatNullValueAsZero = true }; ConditionBase base9 = condition13; RelationCondition condition8 = new RelationCondition(RelationCompareType.Or, base6, base7); return(new RelationCondition(RelationCompareType.And, condition8, new RelationCondition(RelationCompareType.Or, base8, base9))); } case ComparisonOperator.EqualTo: case ComparisonOperator.NotEqualTo: case ComparisonOperator.GreaterThan: case ComparisonOperator.LessThan: case ComparisonOperator.GreaterThanOrEqualTo: case ComparisonOperator.LessThanOrEqualTo: equalsTo = GeneralCompareType.EqualsTo; switch (this.op) { case ComparisonOperator.EqualTo: equalsTo = GeneralCompareType.EqualsTo; goto Label_00F3; case ComparisonOperator.NotEqualTo: equalsTo = GeneralCompareType.NotEqualsTo; goto Label_00F3; case ComparisonOperator.GreaterThan: equalsTo = GeneralCompareType.GreaterThan; goto Label_00F3; case ComparisonOperator.LessThan: equalsTo = GeneralCompareType.LessThan; goto Label_00F3; case ComparisonOperator.GreaterThanOrEqualTo: equalsTo = GeneralCompareType.GreaterThanOrEqualsTo; goto Label_00F3; case ComparisonOperator.LessThanOrEqualTo: equalsTo = GeneralCompareType.LessThanOrEqualsTo; goto Label_00F3; } break; default: return(null); } Label_00F3: condition = new CellValueCondition(equalsTo, this.value1, formula); condition.TreatNullValueAsZero = true; return(condition); }