public bool CanProcess(Expression exp, ISytelineExpressionVisitor visitor)
 {
     if (!exp.IsBinaryExpression()) return false;
     var bin = (BinaryExpression)exp;
     return  ((bin.Left.NodeType == ExpressionType.Constant && ((ConstantExpression)bin.Left).Value == null
              || bin.Right.NodeType == ExpressionType.Constant && ((ConstantExpression)bin.Right).Value == null));
 }
 public string ResolveExpression(Expression exp, Func<Expression, string> evaluateNode, Func<ExpressionType, string> evaluateOp, 
     ISytelineExpressionVisitor visitor)
 {
     var bin = (BinaryExpression)exp;
     var openParen = "(";
     if (bin.NodeType == ExpressionType.NotEqual)
         openParen = "(NOT ";
     if (bin.Right.NodeType == ExpressionType.Constant)
         return openParen + evaluateNode(bin.Left) + " IS NULL) ";
     return openParen + evaluateNode(bin.Right) + " IS NULL) ";
 }
 public string ResolveExpression(Expression exp, Func<Expression, string> evaluateNode, Func<ExpressionType, string> evaluateOp, 
     ISytelineExpressionVisitor visitor)
 {
     var bin = (BinaryExpression)visitor.Visit(exp);
     var lvalue = evaluateNode(bin.Left);
     var op = evaluateOp(bin.NodeType);
     var rvalue = evaluateNode(bin.Right);
     if (rvalue.Trim() == "NULL" && op.Trim() == "=")
         op = " IS ";
     return "(" + lvalue + op + rvalue + ")";
 }
 public OperatorResolverList(ISytelineExpressionVisitor visitor)
 {
     _visitor = visitor;
     _opResolvers.Add(new GreaterThanResolver());
     _opResolvers.Add(new LessThanResolver());
     _opResolvers.Add(new EqualsResolver());
     _opResolvers.Add(new InequalityResolver());
     _opResolvers.Add(new AndResolver());
     _opResolvers.Add(new OrResolver());
     _opResolvers.Add(new GreaterThanOrEqualResolver());
     _opResolvers.Add(new LessThanOrEqualResolver());
 }
 public ExpressionResolverList(ISytelineExpressionVisitor visitor) 
 { 
     _expressionList.Add(new NullBinaryExpressionResolver());
     _expressionList.Add(new BinaryExpressionResolver());
     _expressionList.Add(new IsNullOrEmptyCallExpressionResolver());
     _expressionList.Add(new ConvertExpressionResolver());
     _expressionList.Add(new ConstantExpressionResolver());
     _expressionList.Add(new ContainsCallExpressionResolver());
     _expressionList.Add(new NegateExpressionResolver());
     _expressionList.Add(new ClassValueVariableMemberExpressionResolver());
     _expressionList.Add(new PropertyMemberExpressionResolver());
     _expressionList.Add(new ParameterMemberExpressionResolver());
     _expressionList.Add(new TrimExpressionResolver());
 }
 public IResolveExpressions GetResolverFor(Expression exp, ISytelineExpressionVisitor visitor)
 {
     return _expressionList.Find(e => e.CanProcess(exp,visitor));
 }
 public string ResolveExpression(Expression exp, Func<Expression, string> evaluateNode, Func<ExpressionType, string> evaluateOp, ISytelineExpressionVisitor visitor)
 {
     var c = (ConstantExpression) exp;
     return string.Format(" {0} ", c.Value.FormatValue());
 }
 public bool CanProcess(Expression exp, ISytelineExpressionVisitor visitor)
 {
     return exp.NodeType == ExpressionType.Constant;
 }
 public string ResolveExpression(Expression exp, Func<Expression, string> evaluateNode, Func<ExpressionType, string> evaluateOp, ISytelineExpressionVisitor visitor)
 {
     var member = (MemberExpression)visitor.Visit(exp);
     return string.Format(" {0} ", get_value(member));
 }
 public bool CanProcess(Expression exp, ISytelineExpressionVisitor visitor)
 {
    if(exp.NodeType == ExpressionType.Call)
    {
        var method = (MethodCallExpression) exp;
        return method.Method.Name == "Contains";
    }
     return false;
 }
 public string ResolveExpression(Expression exp, Func<Expression, string> evaluateNode, Func<ExpressionType, string> evaluateOp, ISytelineExpressionVisitor visitor)
 {
     var conv = (UnaryExpression)exp;
     if (conv.Operand.NodeType == ExpressionType.Call)
     {
         var meth = (MethodCallExpression) conv.Operand;
         return meth.ParseContainsCall(" NOT");
     }
     return "";
 }
        public bool CanProcess(Expression exp, ISytelineExpressionVisitor visitor)
        {
            var node = visitor.Visit(exp);
            return (node.NodeType == ExpressionType.Not);

        }
        public string ResolveExpression(Expression exp, Func<Expression, string> evaluateNode, Func<ExpressionType, string> evaluateOp, ISytelineExpressionVisitor visitor)
        {
            var conv = (UnaryExpression) exp;
            var mem = (MemberExpression)conv.Operand;
            return mem.GetValue().FormatValue();

        }
 public string ResolveExpression(Expression exp, Func<Expression, string> evaluateNode, Func<ExpressionType, string> evaluateOp, ISytelineExpressionVisitor visitor)
 {
     return exp.ParseTrimCall();
 }
 public bool CanProcess(Expression exp, ISytelineExpressionVisitor visitor)
 {
     var node = visitor.Visit(exp);
     if (node.NodeType != ExpressionType.Call) return false;
     var method = (MethodCallExpression)exp;
     return (method.Method.Name == "Trim");
 }
 public bool CanProcess(Expression exp, ISytelineExpressionVisitor visitor)
 {
     var node = visitor.Visit(exp);
     if (node.NodeType == ExpressionType.MemberAccess)
     {
         var memberExp = (MemberExpression)node;
         return memberExp.Expression== null;
          
     }
     return false;
 }
        public string ResolveExpression(Expression exp, Func<Expression, string> evaluateNode, Func<ExpressionType, string> evaluateOp,
            ISytelineExpressionVisitor visitor)
        {

            var member = (MethodCallExpression)visitor.Visit(exp);
            var argMember = (MemberExpression)member.Arguments[0]; 
            var parm = argMember.GetAttribute();

            return string.Format(" IsNull({0}, '') = '' ", parm);
        }