protected virtual Clause Render(IValueClause @param) { return new Clause { Operator = @param.ClauseOperator, Value = this.Build(@param) }; }
protected virtual string Build(IValueClause @param) { string fieldpart = string.Format("'{0}'", @param.Field()); if (fieldpart == "\'\'") { throw new ArgumentNullException("@param.FieldID"); } string format = string.Empty; switch (@param.Operator) { case Operator.Equals: format = "{1} = \"{0}\""; if (string.IsNullOrEmpty(@param.Value)) { format = "({1} = \"{0}\" OR {1} = NULL)"; } break; case Operator.DoesNotEqual: format = "{1} != \"{0}\""; if (string.IsNullOrEmpty(@param.Value)) { format = "({1} != \"{0}\" AND {1} != NULL)"; } break; case Operator.Contains: format = "{1} LIKE \"%{0}%\""; break; case Operator.DoesNotContain: format = "NOT({1} LIKE \"%{0}%\")"; break; case Operator.StartsWith: format = "{1} LIKE \"{0}%\""; break; case Operator.DoesNotStartWith: format = "NOT({1} LIKE \"{0}%\")"; break; case Operator.EndsWith: format = "{1} LIKE \"%{0}\""; break; case Operator.DoesNotEndWith: format = "NOT({1} LIKE \"%{0}\")"; break; case Operator.GreaterThan: format = "{1} > \"{0}\""; break; case Operator.GreaterThanOrEqualTo: format = "{1} >= \"{0}\""; break; case Operator.LesserThan: format = "{1} < \"{0}\""; break; case Operator.LesserThanOrEqualTo: format = "{1} <= \"{0}\""; break; } return string.Format(format, @param.Value, fieldpart); }
internal ValuePair(IValueClause first, ClauseOperator clauseoperator, IValueClause second) { this.First = first; this.Second = second; this.ClauseOperator = clauseoperator; }