Beispiel #1
0
        private DataStore(DataStoreType type, string collectionName, AbstractClient client = null)
            : base(new KinveyQueryProvider(typeof(KinveyQueryable <T>), QueryParser.CreateDefault(), new KinveyQueryExecutor <T>()), typeof(T))
        {
            this.collectionName = collectionName;

            if (client != null)
            {
                this.client = client;
            }
            else
            {
                this.client = Client.SharedClient;
            }

            if (type != DataStoreType.NETWORK)
            {
                this.cache     = this.client.CacheManager.GetCache <T>(collectionName);
                this.syncQueue = this.client.CacheManager.GetSyncQueue(collectionName);
            }

            this.storeType = type;
            this.customRequestProperties = this.client.GetCustomRequestProperties();
            this.networkFactory          = new NetworkFactory(this.client);
            this.DeltaSetFetchingEnabled = false;
            this.AutoPagination          = false;
        }
Beispiel #2
0
 private static IQueryProvider CreateQueryProvider(ITable table)
 {
     return(new DefaultQueryProvider(
                typeof(PgSqlQueryable <>),
                QueryParser.CreateDefault(),
                new PgSqlQueryExecutor(table)));
 }
        public static ConditionCollection VisitStatementConditions <T>(Expression <Func <T, bool> > conditions, DatabaseMapper mapper, bool aliasTables)
        {
            // Build a new query
            var queryParser   = QueryParser.CreateDefault();
            var queryExecutor = new StatementExecutor();
            var query         = new StatementQuery <T>(queryParser, queryExecutor);

            // Create an expression to select from the query with the conditions so that we have a sequence for Re-Linq to parse
            var expression = Expression.Call(
                typeof(Queryable),
                "Where",
                new Type[] { query.ElementType },
                query.Expression,
                conditions);

            // Parse the expression with Re-Linq
            var queryModel = queryParser.GetParsedQuery(expression);

            // Get the conditions from the query model
            var visitor = new StatementCreator(mapper, aliasTables);

            visitor.SelectStatement = new SelectStatement();
            queryModel.Accept(visitor);
            return(visitor.SelectStatement.Conditions);
        }
 public void SetUp()
 {
     QuerySource = ExpressionHelper.CreateQueryable <Cook> ();
     IndustrialSectorQuerySource = ExpressionHelper.CreateQueryable <Restaurant>();
     DetailQuerySource           = ExpressionHelper.CreateQueryable <Kitchen> ();
     QueryParser = QueryParser.CreateDefault();
 }
Beispiel #5
0
 private static IQueryProvider CreateQueryProvider(DbConnection connection)
 {
     return(new DefaultQueryProvider(
                typeof(PsqlQueryable <>),
                QueryParser.CreateDefault(),
                new PsqlQueryExecutor(connection)));
 }
Beispiel #6
0
        public static HiveQueryable <T> Queryable <T>(ThriftHive.Iface session)
        {
            var queryParser = QueryParser.CreateDefault();
            var executer    = new HiveQueryExecutor(session);

            return(new HiveQueryable <T>(queryParser, executer, session));
        }
Beispiel #7
0
        /// <summary>
        /// TODO
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <returns></returns>
        public IQueryable <T> AsQueryable <T>(bool inferenceEnabled = false) where T : Resource
        {
            SparqlQueryExecutor executor = new SparqlQueryExecutor(this, inferenceEnabled);

            QueryParser queryParser = QueryParser.CreateDefault();

            return(new SparqlQueryable <T>(queryParser, executor));
        }
 public void SetUp()
 {
     QuerySource = ExpressionHelper.CreateQueryable <Cook> ();
     IndustrialSectorQuerySource = ExpressionHelper.CreateQueryable <Restaurant>();
     DetailQuerySource           = ExpressionHelper.CreateQueryable <Kitchen> ();
     QueryParser = QueryParser.CreateDefault();
     QueryParserWithCustomizedPartialEvaluation = CreateQueryParserWithCustimizedPartialEvaluation();
 }
 /// <summary>
 /// Creates a new entity collection
 /// </summary>
 /// <param name="context">The context that manages the entities</param>
 /// <param name="parent">The parent entity that contains this collection</param>
 /// <param name="propertyType">The property type that the collection maps to</param>
 /// <param name="isInverse">True if the collection represents the inverse of <paramref name="propertyType"/></param>
 public BrightstarEntityCollection(BrightstarEntityContext context, BrightstarEntityObject parent, string propertyType, bool isInverse = false) :
     base(new EntityFrameworkCollectionQueryProvider(QueryParser.CreateDefault(), new EntityFrameworkQueryExecutor(context)))
 {
     _context         = context;
     _parent          = parent;
     _propertyTypeUri = propertyType;
     _propertyType    = _context.GetDataObject(new Uri(propertyType), false);
     _isInverse       = isInverse;
 }
Beispiel #10
0
        private static void CreateDefaultQueryParser()
        {
            Console.WriteLine("Creating QueryParser...");
            var stopwatch = Stopwatch.StartNew();

            QueryParser.CreateDefault();
            stopwatch.Stop();
            Console.WriteLine("Time taken: {0}ms, reference time: ~36ms", stopwatch.ElapsedMilliseconds);
        }
        private IQuery CreateNHQuery(ISession session, Expression queryExpression)
        {
            // 使用 QueryParser
            // 将表达式转换为 QueryModel
            QueryModel queryModel = QueryParser.CreateDefault().GetParsedQuery(queryExpression);

            // 有了 QueryModel 之后
            // 通过 QueryModelVisitorBase 的 Visitor 方法进行数据解析
            return(HqlGeneratorQueryModelVisitor.GenerateHqlQuery(queryModel).CreateQuery(session));
        }
        public IQueryable <T> Create <T>(Uri uri)
        {
            var parser = QueryParser.CreateDefault();

            var executor = new RestQueryExecutor(uri, _queryModelTranslator, _httpService);

            var provider = new RestQueryProvider(parser, executor);

            return(new RestQueryable <T>(provider));
        }
Beispiel #13
0
        public SpEntityQueryable(SpQueryArgs <TContext> args)
            : this(QueryParser.CreateDefault(),
#if SP2013 || SP2016
                   new SpQueryExecutor <TEntity, TContext>(args)
#else
                   new SpAsyncQueryExecutor <TEntity, TContext>(args)
#endif
                   )
        {
        }
Beispiel #14
0
        public void SetUp()
        {
            _mockRepository  = new MockRepository();
            _queryParserMock = _mockRepository.StrictMock <IQueryParser> ();
            _executorMock    = _mockRepository.StrictMock <IQueryExecutor> ();

            _queryProvider = new TestQueryProvider(_queryParserMock, _executorMock);

            _queryableWithDefaultParser = new TestQueryable <Cook> (QueryParser.CreateDefault(), _executorMock);
            _fakeQueryModel             = ExpressionHelper.CreateQueryModel <Cook> ();
        }
        public static RethinkQueryable <T> AsQueryable <T>(this Table term, IConnection conn)
        {
            var executor = new RethinkQueryExecutor(term, conn);

            return(new RethinkQueryable <T>(
                       new DefaultQueryProvider(
                           typeof(RethinkQueryable <>),
                           QueryParser.CreateDefault(),
                           executor)
                       ));
        }
Beispiel #16
0
        public void Test()
        {
            var queryParser = QueryParser.CreateDefault();
            var context     = new WssQuery <IWssQueryableListItem>(queryParser, new WssQueryExecutor());

            var query = context.Where(item => item.Id > 0 && string.IsNullOrWhiteSpace(item.Title));

            var camlVersion = query.ToCamlTree();

            var list = query.ToList();
        }
Beispiel #17
0
 // This constructor is called by users, create a new IQueryExecutor.
 internal ExcelQueryable(ExcelQueryArgs args, ILogManagerFactory logManagerFactory)
     : base(QueryParser.CreateDefault(), CreateExecutor(args, logManagerFactory))
 {
     foreach (var property in typeof(T).GetProperties())
     {
         ExcelColumnAttribute att = (ExcelColumnAttribute)Attribute.GetCustomAttribute(property, typeof(ExcelColumnAttribute));
         if (att != null && !args.ColumnMappings.ContainsKey(property.Name))
         {
             args.ColumnMappings.Add(property.Name, att.ColumnName);
         }
     }
 }
Beispiel #18
0
        static void Main(string[] args)
        {
            var queryParser = QueryParser.CreateDefault();
            var items       = new SampleQueryable <SampleDataSourceItem>(queryParser, new SampleQueryExecutor());

            var results = from i in items select i;
            var list    = results.ToList();

            if (list.Count == 10)
            {
            }
        }
        protected RethinkQueryable <T> GetQueryable <T>(string table, ReqlAst expected)
        {
            var executor = new TestRethinkQueryExecutor(RethinkDB.R.Table(table), Connection, reql =>
            {
                QueriesAreTheSame(expected, reql);
            });

            return(new RethinkQueryable <T>(
                       new DefaultQueryProvider(
                           typeof(RethinkQueryable <>),
                           QueryParser.CreateDefault(),
                           executor)
                       ));
        }
        // This constructor is called by users, create a new IQueryExecutor.
        internal ExcelQueryable(ExcelQueryArgs args, ILogManagerFactory logManagerFactory)
            : base(QueryParser.CreateDefault(), CreateExecutor(args, logManagerFactory))
        {
            foreach (var property in typeof(T).GetProperties())
            {
                ExcelColumnAttribute att = (ExcelColumnAttribute)Attribute.GetCustomAttribute(property, typeof(ExcelColumnAttribute));
                if (att != null && !args.ColumnMappings.ContainsKey(property.Name))
                {
                    var columnNames = ExcelUtilities.GetColumnNames(args);

                    args.ColumnMappings.Add(property.Name, !att.IsForced ?
                                            att.ColumnName :
                                            columnNames.ToList().Find(x => att.HasSimilarColumn(x)) ?? att.ColumnName);
                }
            }
        }
        public static SqlServerQueryable <T> AsLinqQueryable <T>(this IDBContext <T> context) where T : BaseEntity <T>, new()
        {
            ISQLContext sqlContext = new SQLContext(context.Session);
            var         tblName    = "";
            var         proxy      = EntitiesProxyHelper.GetProxyInfo <T>();

            if (proxy.IsCompositeQuery)
            {
                tblName = string.Format(" ({0})  ", proxy.CompositeSql);
            }
            else
            {
                tblName = proxy.TableName;
            }
            return(new SqlServerQueryable <T>(QueryParser.CreateDefault(), new SqlServerQueryExecutor(sqlContext, tblName)));
        }
Beispiel #22
0
        public static void AddFilter <TSource>(
            IServiceProvider Locator,
            IDatabaseQuery query,
            ISpecification <TSource> filter,
            StringBuilder sb)
        {
            var cf = Locator.Resolve <IPostgresConverterFactory>();
            var ep = Locator.Resolve <IExtensibilityProvider>();
            var qp =
                new MainQueryParts(
                    Locator,
                    cf,
                    ep.ResolvePlugins <IQuerySimplification>(),
                    ep.ResolvePlugins <IExpressionMatcher>(),
                    ep.ResolvePlugins <IMemberMatcher>(),
                    new IProjectionMatcher[0]);
            var linq   = new Queryable <TSource>(new QueryExecutor(query, Locator, cf, ep)).Filter(filter);
            var parser = QueryParser.CreateDefault();
            var model  = parser.GetParsedQuery(linq.Expression);

            if (model.BodyClauses.Count > 0)
            {
                sb.AppendLine("WHERE");
                for (int i = 0; i < model.BodyClauses.Count; i++)
                {
                    var wc = model.BodyClauses[i] as WhereClause;
                    if (wc == null)
                    {
                        continue;
                    }
                    sb.Append("	");
                    if (i > 0)
                    {
                        sb.Append("AND ");
                    }
                    sb.Append(qp.GetSqlExpression(wc.Predicate));
                }
            }
        }
 public IQueryable <T> CreateQueryable <T>(ISessionProvider provider)
 {
     return(new OracleQueryable <T>(QueryParser.CreateDefault(), new OracleQueryExecutor(provider)));
 }
Beispiel #24
0
 // This constructor is called by our users, create a new IQueryExecutor.
 public CouchDbQueryable(string url, string databaseName)
     : base(QueryParser.CreateDefault(), CreateExecutor(url, databaseName))
 {
 }
Beispiel #25
0
 public SqlQueryable()
     : this(QueryParser.CreateDefault(), new SqlQueryableExecutor())
 {
 }
Beispiel #26
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ODataQueryable{T}"/> class.
 /// </summary>
 /// <param name="odata">The <see cref="ODataBase"/>.</param>
 /// <param name="queryArgs">The <see cref="ODataArgs"/>.</param>
 /// <param name="executor">The <see cref="IQueryExecutor"/>.</param>
 public ODataQueryable(ODataBase odata, ODataArgs queryArgs, ref IQueryExecutor executor)
     : base(QueryParser.CreateDefault(), CreateExecutor(odata, queryArgs, ref executor))
 {
     QueryExecutor = (ODataQueryExecutor)executor;
 }
Beispiel #27
0
 public Queryable(IQueryExecutor executor)
     : base(QueryParser.CreateDefault(), executor)
 {
 }
Beispiel #28
0
 /// <summary>
 /// Initializes a new instance of the <see cref="Queryable{T}"/> class with a specific <see cref="ITypedQueryExecutor{T}"/>
 /// and the default <see cref="IQueryParser"/>.
 /// This constructor should normally not be used.
 /// </summary>
 /// <param name="executor">The <see cref="ITypedQueryExecutor{T}"/> used to execute the query.</param>
 public Queryable(ITypedQueryExecutor <T> executor)
     : base(QueryParser.CreateDefault(), executor)
 {
 }
Beispiel #29
0
 public static IQueryProvider CreateQueryProvider <T>(ProjectionApi session)
 {
     return(new DefaultQueryProvider(typeof(ProjectionQueryable <>), QueryParser.CreateDefault(), CreateExecutor(session)));
 }
Beispiel #30
0
        public DataTable Analyze(
            IEnumerable <string> dimensions,
            IEnumerable <string> facts,
            IEnumerable <KeyValuePair <string, bool> > order,
            ISpecification <TSource> filter,
            int?limit,
            int?offset)
        {
            var usedDimensions = new List <string>();
            var usedFacts      = new List <string>();
            var customOrder    = new List <KeyValuePair <string, bool> >();

            if (dimensions != null)
            {
                usedDimensions.AddRange(dimensions);
            }
            if (facts != null)
            {
                usedFacts.AddRange(facts);
            }
            if (order != null)
            {
                foreach (var o in order)
                {
                    if (o.Key != null)
                    {
                        customOrder.Add(new KeyValuePair <string, bool>(o.Key, o.Value));
                    }
                }
            }

            ValidateInput(usedDimensions, usedFacts, customOrder.Select(it => it.Key));

            var sb    = new StringBuilder();
            var alias = filter != null?filter.IsSatisfied.Parameters.First().Name : "it";

            if (offset != null)
            {
                sb.Append("SELECT ");
                sb.Append(string.Join(", ", usedDimensions.UnionAll(usedFacts).Select(it => "\"" + it + "\"")));
                sb.AppendLine(" FROM (");
            }
            if (limit != null || offset != null)
            {
                sb.Append("SELECT /*+ FIRST_ROWS(n) */ ");
                sb.Append(string.Join(", ", usedDimensions.UnionAll(usedFacts).Select(it => "\"" + it + "\"")));
                if (offset != null)
                {
                    sb.Append(", RowNum rn$");
                }
                sb.AppendLine(" FROM (");
            }
            sb.Append("SELECT ");
            foreach (var d in usedDimensions)
            {
                sb.AppendFormat("{0} AS \"{1}\", ", CubeDimensions[d](alias), d);
            }
            foreach (var f in usedFacts)
            {
                sb.AppendFormat("{0} AS \"{1}\", ", CubeFacts[f](alias), f);
            }
            sb.Length -= 2;
            sb.AppendLine();
            sb.AppendFormat("FROM {0} \"{1}\"", Source, alias);
            sb.AppendLine();

            var command = DatabaseQuery.NewCommand();

            if (filter != null)
            {
                var cf = Locator.Resolve <IOracleConverterFactory>();
                var ep = Locator.Resolve <IExtensibilityProvider>();
                var qp =
                    new MainQueryParts(
                        Locator,
                        cf,
                        ep.ResolvePlugins <IQuerySimplification>(),
                        ep.ResolvePlugins <IExpressionMatcher>(),
                        ep.ResolvePlugins <IMemberMatcher>(),
                        new IProjectionMatcher[0]);
                var linq   = new Queryable <TSource>(new QueryExecutor(DatabaseQuery, Locator, cf, ep)).Filter(filter);
                var parser = QueryParser.CreateDefault();
                var model  = parser.GetParsedQuery(linq.Expression);
                if (model.BodyClauses.Count > 0)
                {
                    sb.AppendLine("WHERE");
                    for (int i = 0; i < model.BodyClauses.Count; i++)
                    {
                        var wc = model.BodyClauses[i] as WhereClause;
                        sb.Append("	");
                        if (i > 0)
                        {
                            sb.Append("AND ");
                        }
                        sb.Append(qp.GetSqlExpression(wc.Predicate));
                    }
                }
                foreach (var p in qp.Parameters.Parameters)
                {
                    command.Parameters.Add(p);
                }
            }
            sb.AppendLine();
            if (usedDimensions.Count > 0)
            {
                sb.Append("GROUP BY ");
                sb.AppendLine(string.Join(", ", usedDimensions.Select(it => CubeDimensions[it](alias))));
            }
            if (customOrder.Count > 0)
            {
                sb.Append("ORDER BY ");
                sb.AppendLine(string.Join(", ", customOrder.Select(it => "\"{0}\" {1}".With(it.Key, it.Value ? string.Empty : "DESC"))));
            }
            if (limit != null || offset != null)
            {
                sb.AppendLine(") sq$");
                if (limit != null)
                {
                    sb.Append("WHERE RowNum <= ");
                    sb.Append(limit.Value + (offset != null ? offset.Value : 0));
                }
            }
            if (offset != null)
            {
                sb.AppendLine(") sq$");
                sb.Append("WHERE sq$.rn$ > ");
                sb.Append(offset.Value);
            }
            command.CommandText = sb.ToString();
            return(DatabaseQuery.Fill(command));
        }