Exemplo n.º 1
0
        private Bamboo.Query.Predicates.Predicate CreatePredicate(object predicate)
        {
            if (predicate is Bamboo.Query.Query.AndPredicate)
            {
                Bamboo.Query.Query.AndPredicate andPredicate = (Bamboo.Query.Query.AndPredicate)predicate;

                return(new Bamboo.Query.Predicates.AndPredicate(CreatePredicate(andPredicate.A), CreatePredicate(andPredicate.B)));
            }
            else if (predicate is Bamboo.Query.Query.EqualsPredicate)
            {
                Bamboo.Query.Query.EqualsPredicate equalsPredicate = (Bamboo.Query.Query.EqualsPredicate)predicate;

                return(new Bamboo.Query.Predicates.EqualsPredicate(GetIndex(equalsPredicate.Column, this._node.ColumnCoordinates), equalsPredicate.Value));
            }
            else if (predicate is Bamboo.Query.Query.GreaterThanPredicate)
            {
                Bamboo.Query.Query.GreaterThanPredicate greaterThanPredicate = (Bamboo.Query.Query.GreaterThanPredicate)predicate;

                return(new Bamboo.Query.Predicates.GreaterThanPredicate(GetIndex(greaterThanPredicate.Column, this._node.ColumnCoordinates), greaterThanPredicate.Value));
            }
            else if (predicate is Bamboo.Query.Query.LessThanPredicate)
            {
                Bamboo.Query.Query.LessThanPredicate lessThanPredicate = (Bamboo.Query.Query.LessThanPredicate)predicate;

                return(new Bamboo.Query.Predicates.LessThanPredicate(GetIndex(lessThanPredicate.Column, this._node.ColumnCoordinates), lessThanPredicate.Value));
            }
            else if (predicate is Bamboo.Query.Query.NotEqualsPredicate)
            {
                Bamboo.Query.Query.NotEqualsPredicate notEqualsPredicate = (Bamboo.Query.Query.NotEqualsPredicate)predicate;

                return(new Bamboo.Query.Predicates.NotEqualsPredicate(GetIndex(notEqualsPredicate.Column, this._node.ColumnCoordinates), notEqualsPredicate.Value));
            }
            else if (predicate is Bamboo.Query.Query.OrPredicate)
            {
                Bamboo.Query.Query.OrPredicate orPredicate = (Bamboo.Query.Query.OrPredicate)predicate;

                return(new Bamboo.Query.Predicates.OrPredicate(CreatePredicate(orPredicate.A), CreatePredicate(orPredicate.B)));
            }
            else
            {
                throw new System.Exception("Invalid filter expression: " + predicate.GetType().FullName);
            }
        }
Exemplo n.º 2
0
        private static void GenerateWherePredicate(object predicate, System.Text.StringBuilder stringBuilder, ref bool first)
        {
            if (predicate is Bamboo.Query.Query.EqualsPredicate)
            {
                Bamboo.Query.Query.EqualsPredicate equalsPredicate = (Bamboo.Query.Query.EqualsPredicate)predicate;

                if (first)
                {
                    first = false;
                }
                else
                {
                    stringBuilder.Append(", ");
                }

                Escape(stringBuilder, equalsPredicate.Column.Identifier);
                stringBuilder.Append(" ");
                stringBuilder.Append("=");
                stringBuilder.Append(" ");
                stringBuilder.Append("'");
                stringBuilder.Append(equalsPredicate.Value);
                stringBuilder.Append("'");
            }
            else if (predicate is Bamboo.Query.Query.OrPredicate)
            {
                Bamboo.Query.Query.OrPredicate orPredicate = (Bamboo.Query.Query.OrPredicate)predicate;

                GenerateWherePredicate(orPredicate.A, stringBuilder, ref first);
                GenerateWherePredicate(orPredicate.B, stringBuilder, ref first);
            }
            else if (predicate is Bamboo.Query.Query.AndPredicate)
            {
                Bamboo.Query.Query.AndPredicate andPredicate = (Bamboo.Query.Query.AndPredicate)predicate;

                GenerateWherePredicate(andPredicate.A, stringBuilder, ref first);
                GenerateWherePredicate(andPredicate.B, stringBuilder, ref first);
            }
            else
            {
                throw new System.Exception("Invalid query.");
            }
        }
Exemplo n.º 3
0
        private static object ParseWherePredicate(System.Collections.ArrayList tokens, string from)
        {
            System.Text.StringBuilder Column   = new System.Text.StringBuilder();
            System.Text.StringBuilder Operator = new System.Text.StringBuilder();
            System.Text.StringBuilder Value    = new System.Text.StringBuilder();
            System.Text.StringBuilder current  = Column;

            for (int i = 0; i < tokens.Count; i++)
            {
                string token = (string)tokens[i];

                if (token.Equals("="))
                {
                    Operator.Append(token);

                    current = Value;
                }
                else if (token.Equals(">"))
                {
                    Operator.Append(token);

                    current = Value;
                }
                else if (token.Equals("<"))
                {
                    Operator.Append(token);

                    current = Value;
                }
                else if (token.Equals("<>"))
                {
                    Operator.Append(token);

                    current = Value;
                }
                else if (token.Equals("!="))
                {
                    Operator.Append(token);

                    current = Value;
                }
                else
                {
                    current.Append(token);
                }
            }



            object predicate = null;

            string column    = Column.ToString();
            string operator_ = Operator.ToString();

            System.IComparable value = ParseAtom(Value.ToString());

            if (operator_.Equals("="))
            {
                predicate = new Bamboo.Query.Query.EqualsPredicate(CreateColumn(column, from), value);
            }
            else if (operator_.Equals(">"))
            {
                predicate = new Bamboo.Query.Query.GreaterThanPredicate(CreateColumn(column, from), value);
            }
            else if (operator_.Equals("<"))
            {
                predicate = new Bamboo.Query.Query.LessThanPredicate(CreateColumn(column, from), value);
            }
            else if (operator_.Equals("<>"))
            {
                predicate = new Bamboo.Query.Query.NotEqualsPredicate(CreateColumn(column, from), value);
            }
            else if (operator_.Equals("!="))
            {
                predicate = new Bamboo.Query.Query.NotEqualsPredicate(CreateColumn(column, from), value);
            }
            else
            {
                throw new System.Exception("Invalid operator: " + operator_);
            }

            return(predicate);
        }