Ejemplo n.º 1
0
        public void Expression_should_give_operation_and_or()
        {
            var queryable = collection.Where(dto => dto.Id == Guid.Empty && dto.Score == 10 || dto.FirstName == "lalala");

            var visitor = new QueryVisitor();

            visitor.Visit(queryable.Expression);

            Check.That(visitor.Operation).IsInstanceOf <Or>();

            var or     = (Or)visitor.Operation;
            var and    = (And)or.First;
            var first  = (QueryById)and.First;
            var second = (QueryByField)and.Second;

            var third = (QueryByField)or.Second;

            Check.That(first.Id).IsEqualTo(Guid.Empty);

            Check.That(second.Name.Value).IsEqualTo("Score");
            Check.That(second.FieldValue).IsEqualTo(10);

            Check.That(third.Name.Value).IsEqualTo("FirstName");
            Check.That(third.FieldValue).IsEqualTo("lalala");
        }
        public EntityCollection getFriendsAndQuotes(QueryExpression inputQE)
        {
            QueryVisitor qeParams = new QueryVisitor();

            qeParams.Visit(inputQE);
            var Parameters = qeParams.SearchKeyWords;

            var WebServiceResponse = CallToWebService();
            var ListFriendQuote    = JsonConvert.DeserializeObject <List <FriendQuote> >(WebServiceResponse);
            List <FriendQuote> FilterFriendQuotes = default;

            if (Parameters.Count > 0)
            {
                FilterFriendQuotes = ListFriendQuote.Where(x => x.Character == Parameters.First().Value).ToList();
            }
            else
            {
                FilterFriendQuotes = ListFriendQuote;
            }

            EntityCollection returnEntities = new EntityCollection();

            foreach (var item in FilterFriendQuotes)
            {
                returnEntities.Entities.Add(new Entity("erf_friendquote", CachedGuids.IDs[ListFriendQuote.FindIndex(x => x.Character == item.Character)])
                {
                    Attributes = new AttributeCollection()
                    {
                        new KeyValuePair <string, object>("erf_friend", item.Character),
                        new KeyValuePair <string, object>("erf_quote", item.Quote)
                    }
                });
            }
            return(returnEntities);
        }
Ejemplo n.º 3
0
        public static IList ExecuteDb <T, TResult>(Db.OeEntitySetAdapterCollection entitySetAdapters, DbContext dataContext, Expression <Func <IQueryable <T>, TResult> > expression)
        {
            var        visitor = new QueryVisitor <T>(entitySetAdapters, dataContext);
            Expression call    = visitor.Visit(expression.Body);

            return(new[] { visitor.Query.Provider.Execute <TResult>(call) });
        }
Ejemplo n.º 4
0
        public async Task <ICollection <T> > Find(IQueryable <T> query)
        {
            var expression = query.Expression;
            var visitor    = new QueryVisitor();

            visitor.Visit(expression);
            return(await visitor.Operation.Execute(this));
        }
Ejemplo n.º 5
0
        public static IList ExecuteDb <T, TResult>(DbContext dataContext, Expression <Func <IQueryable <T>, TResult> > expression)
        {
            IQueryable <T> query   = GetQuerableDb <T>(dataContext);
            var            visitor = new QueryVisitor <T>(query);
            Expression     call    = visitor.Visit(expression.Body);

            return(new[] { query.Provider.Execute <TResult>(call).ToString() });
        }
Ejemplo n.º 6
0
        public object GetQueryable <TResult>(System.Linq.Expressions.Expression expression)
        {
            var v = new QueryVisitor();

            v.Visit(expression);

            var reader = new AdgangsAdresseReader <TResult>(v.Evaluate());

            return(reader.AsQueryable());
        }
Ejemplo n.º 7
0
        public void TestSngExpressions(string expr, string expectedQuery)
        {
            Setup(expr);

            CalcParser.ExpressionContext context = this._calcParser.expression();

            QueryVisitor visitor = new QueryVisitor();
            string       query   = visitor.Visit(context);

            Assert.AreEqual(expectedQuery, query);
        }
Ejemplo n.º 8
0
        public void TestQueryVariablesOracle(string expr, string expectedQuery)
        {
            Setup(expr);

            CalcParser.ExpressionContext context = this._calcParser.expression();
            DbTranslator translator = new OracleTranslator();

            QueryVisitor visitor = new QueryVisitor(new TestMetadataResolver(), translator);
            string       query   = visitor.Visit(context);

            Assert.AreEqual(expectedQuery, query);
        }
Ejemplo n.º 9
0
        /// <summary>
        /// Parses a user query (without validating it). You practically only get the syntax tree.
        /// </summary>
        /// <param name="text"></param>
        /// <param name="errorListener"></param>
        /// <returns></returns>
        public static Query ParseForSyntaxOnly(string text, IErrorListener errorListener = null)
        {
            var inputStream       = new AntlrInputStream(text);
            var speakLexer        = new CQLLexer(inputStream);
            var commonTokenStream = new CommonTokenStream(speakLexer);
            var parser            = new CQLParser(commonTokenStream);

            AddErrorListener(parser, errorListener);
            var parseContext = parser.query();
            var visitor      = new QueryVisitor();

            return(visitor.Visit(parseContext));
        }
Ejemplo n.º 10
0
        public void TestNormdFirebird(string expr, string expectedQuery)
        {
            Setup(expr);

            CalcParser.ExpressionContext context = this._calcParser.expression();
            DbTranslator      translator         = new FirebirdTranslator();
            IMetadataResolver resolver           = new TestMetadataResolver();

            QueryVisitor visitor = new QueryVisitor(resolver, translator);
            string       query   = visitor.Visit(context);

            Assert.AreEqual(expectedQuery, query);
        }
Ejemplo n.º 11
0
        public void TestMathConstants(string expr, string expectedQuery)
        {
            Setup(expr);

            CalcParser.ExpressionContext context = this._calcParser.expression();
            DbTranslator      translator         = Substitute.For <DbTranslator>();
            IMetadataResolver resolver           = Substitute.For <IMetadataResolver>();

            QueryVisitor visitor = new QueryVisitor(resolver, translator);
            string       query   = visitor.Visit(context);

            Assert.AreEqual(expectedQuery, query);
        }
Ejemplo n.º 12
0
        public static IList ExecuteDb <T, TResult>(Db.OeDataAdapter dataAdapter, DbContext dataContext,
                                                   Expression <Func <IQueryable <T>, IQueryable <TResult> > > expression, out IReadOnlyList <EfInclude> includes)
        {
            var        visitor = new QueryVisitor <T>(dataAdapter.EntitySetAdapters, dataContext);
            Expression call    = visitor.Visit(expression.Body);

            var metadataProvider = new OdataToEntity.EfCore.OeEfCoreEdmModelMetadataProvider(dataContext.Model);
            var includeVisitor   = new IncludeVisitor(metadataProvider, dataAdapter.IsDatabaseNullHighestValue);

            call     = includeVisitor.Visit(call);
            includes = includeVisitor.Includes;

            return(visitor.Query.Provider.CreateQuery <TResult>(call).ToList());
        }
Ejemplo n.º 13
0
        public void Expression_should_give_operationById()
        {
            var queryable = collection.Where(dto => dto.Id == Guid.Empty);

            var visitor = new QueryVisitor();

            visitor.Visit(queryable.Expression);

            Check.That(visitor.Operation).IsInstanceOf <QueryById>();

            var queryById = (QueryById)visitor.Operation;

            Check.That(queryById.Id).IsEqualTo(Guid.Empty);
        }
Ejemplo n.º 14
0
        public static IList ExecuteDb <T, TResult>(Db.OeEntitySetAdapterCollection entitySetAdapters, DbContext dataContext,
                                                   Expression <Func <IQueryable <T>, IQueryable <TResult> > > expression, out IReadOnlyList <IncludeVisitor.Include> includes)
        {
            var        visitor = new QueryVisitor <T>(entitySetAdapters, dataContext);
            Expression call    = visitor.Visit(expression.Body);

            var includeVisitor = new IncludeVisitor();

            call     = includeVisitor.Visit(call);
            includes = includeVisitor.Includes;

            IList fromDb = visitor.Query.Provider.CreateQuery <TResult>(call).ToList();

            if (typeof(TResult) == typeof(Object))
            {
                fromDb = ToOpenType(fromDb);
            }

            return(fromDb);
        }
Ejemplo n.º 15
0
        public void testQueryVisitor()
        {
            // Define Condition Values
            var QEcontact_firstname = "Enrique";

            // Instantiate QueryExpression QEcontact
            var QEcontact = new QueryExpression("contact");

            QEcontact.TopCount = 50;

            // Add all columns to QEcontact.ColumnSet
            QEcontact.ColumnSet.AllColumns = true;

            // Define filter QEcontact.Criteria
            QEcontact.Criteria.AddCondition("firstname", ConditionOperator.Equal, QEcontact_firstname);

            QueryVisitor qe = new QueryVisitor();

            qe.Visit(QEcontact);
        }
Ejemplo n.º 16
0
        public static IList ExecuteDb <T, TResult>(DbContext dataContext, Expression <Func <IQueryable <T>, IQueryable <TResult> > > expression)
        {
            IQueryable <T> query   = GetQuerableDb <T>(dataContext);
            var            visitor = new QueryVisitor <T>(query);
            Expression     call    = visitor.Visit(expression.Body);

            var includeVisitor = new IncludeVisitor();

            call = includeVisitor.Visit(call);

            IList fromDb = query.Provider.CreateQuery <TResult>(call).ToList();

            if (typeof(TResult) == typeof(Object))
            {
                fromDb = SortProperty(fromDb);
            }
            else
            {
                SetNullCollection(fromDb, includeVisitor.Includes);
            }
            return(fromDb);
        }
Ejemplo n.º 17
0
        private static SelectQuery RemoveContextFromQuery(TableBuilder.TableContext tableContext, SelectQuery query)
        {
            var clonedTableSource = tableContext.SelectQuery.From.Tables[0];

            while (clonedTableSource.Joins.Count > 0)
            {
                var join = clonedTableSource.Joins[0];
                tableContext.SelectQuery.From.Tables.Add(join.Table);
                clonedTableSource.Joins.RemoveAt(0);
            }

            tableContext.SelectQuery.From.Tables.RemoveAt(0);
            var queryVisitor = new QueryVisitor();

            queryVisitor.Visit(query, e =>
            {
                if (e is SelectQuery selectQuery && selectQuery.From.Tables.Count > 0)
                {
                    if (selectQuery.From.Tables[0].Source is SelectQuery subSelect)
                    {
                        if (subSelect.From.Tables.Count == 0)
                        {
                            if (!subSelect.Where.IsEmpty)
                            {
                                selectQuery.Where.ConcatSearchCondition(subSelect.Where.SearchCondition);
                            }

                            selectQuery.From.Tables.RemoveAt(0);

                            query.Walk(new WalkOptions(), qe =>
                            {
                                if (qe is SqlColumn column && column.Parent == subSelect)
                                {
                                    return(column.Expression);
                                }

                                return(qe);
                            });
Ejemplo n.º 18
0
        public void TestStringFldlenExpressionsFirebird(string expr, string expectedQuery)
        {
            Setup(expr);

            CalcParser.ExpressionContext context = this._calcParser.expression();

            DbTranslator      translator = new FirebirdTranslator();
            IMetadataResolver resolver   = Substitute.For <IMetadataResolver>();

            resolver
            .GetField(Arg.Any <string>())
            .Returns(callinfo => new FieldInfo
            {
                Name = callinfo.ArgAt <string>(0),
                Type = DFM_FIELD_TYPE.DFM_FT_STRING
            });

            QueryVisitor visitor = new QueryVisitor(resolver, translator);

            string query = visitor.Visit(context);

            Assert.AreEqual(expectedQuery, query);
        }
Ejemplo n.º 19
0
        /// <summary>
        /// Parst den übergeben String und gibt das Ergebnis als HttpQuery Objekt mit den Ergebnissen wieder zurück.
        /// </summary>
        /// <param name="query"></param>
        /// <returns></returns>
        public static HttpQuery Query(string query)
        {
            AntlrInputStream input = new AntlrInputStream(query);
            var lexer = new HttpQueryLexer(input);
            CommonTokenStream tokens = new CommonTokenStream(lexer);
            var parser = new HttpQueryParser(tokens);
            var context = parser.init();

            if (context.exception == null && parser.NumberOfSyntaxErrors == 0)
            {
                var visitor = new QueryVisitor<object>();

                visitor.Visit(context);
                return visitor.GetQuery();
            }
            else
            {
                return new HttpQuery() { Exception = new Exception("Syntax Error") };
            }
        }