Package org.apache.openjpa.kernel

Examples of org.apache.openjpa.kernel.QueryContext


                    new Object[]{ e.toString(), jpql }), e);
            }
        }

        void populate(ExpressionStoreQuery query) {
            QueryContext ctx = query.getContext();

            // if the owning query's context does not have
            // any candidate class, then set it here
            if (ctx.getCandidateType() == null) {
                if (_candidateType == null)
                    _candidateType = new JPQLExpressionBuilder
                        (null, query, this).getCandidateType();
                ctx.setCandidateType(_candidateType, true);
            }
        }
View Full Code Here


        private final boolean _select;
        private final boolean _call;   // native call stored procedure
        private final QueryResultMapping _resultMapping;

        public SQLExecutor(SQLStoreQuery q, ClassMetaData candidate) {
            QueryContext ctx = q.getContext();
            String resultMapping = ctx.getResultMappingName();
            if (resultMapping == null)
                _resultMapping = null;
            else {
                ClassLoader envLoader = ctx.getStoreContext().getClassLoader();
                MappingRepository repos = q.getStore().getConfiguration().
                    getMappingRepositoryInstance();
                _resultMapping = repos.getQueryResultMapping
                    (ctx.getResultMappingScope(), resultMapping, envLoader,
                        true);
            }
            _meta = candidate;

            String sql = StringUtils.trimToNull(ctx.getQueryString());
            if (sql == null)
                throw new UserException(_loc.get("no-sql"));
            _select = sql.length() > 6
                && sql.substring(0, 6).equalsIgnoreCase("select");
            _call = sql.length() > 4
View Full Code Here

        new ArrayList<Future<ResultObjectProvider>>();
            final List<Executor> usedExecutors = new ArrayList<Executor>();
      final List<ResultObjectProvider> rops =
        new ArrayList<ResultObjectProvider>();
      List<SliceStoreManager> targets = findTargets();
      QueryContext ctx = q.getContext();
      boolean isReplicated = containsReplicated(ctx);
            ExecutorService threadPool = SliceThread.getPool();
      for (int i = 0; i < owner._queries.size(); i++) {
                // if replicated, then execute only on single slice
        if (isReplicated && !usedExecutors.isEmpty()) {
          break;
        }
                StoreManager sm = owner.getDistributedStore().getSlice(i);
        if (!targets.contains(sm))
          continue;
        StoreQuery query = owner._queries.get(i);
        Executor executor = executors.get(i);
        if (!targets.contains(sm))
          continue;
        usedExecutors.add(executor);
                QueryExecutor call = new QueryExecutor();
                call.executor = executor;
                call.query = query;
                call.params = params;
                call.range = range;
                futures.add(threadPool.submit(call));
      }
      for (Future<ResultObjectProvider> future : futures) {
        try {
          rops.add(future.get());
        } catch (InterruptedException e) {
          throw new RuntimeException(e);
        } catch (ExecutionException e) {
          throw new StoreException(e.getCause());
        }
      }
     
      ResultObjectProvider[] tmp = rops
                    .toArray(new ResultObjectProvider[rops.size()]);
      ResultObjectProvider result = null;
      boolean[] ascending = getAscending(q);
      boolean isAscending = ascending.length > 0;
      boolean isAggregate = ctx.isAggregate();
      boolean hasRange = ctx.getEndRange() != Long.MAX_VALUE;
      if (isAggregate) {
        result = new UniqueResultObjectProvider(tmp, q,
            getQueryExpressions());
      } else if (isAscending) {
                result = new OrderingMergedResultObjectProvider(tmp, ascending,
                    usedExecutors.toArray(new Executor[usedExecutors.size()]),
          q, params);
      } else {
        result = new MergedResultObjectProvider(tmp);
      }
      if (hasRange) {
                result = new RangeResultObjectProvider(result,
                        ctx.getStartRange(), ctx.getEndRange());
      }
      return result;
    }
View Full Code Here

        final Object[] params, final Range range) {
      List<Future<ResultObjectProvider>> futures = new ArrayList<Future<ResultObjectProvider>>();
            final List<Executor> usedExecutors = new ArrayList<Executor>();
      final List<ResultObjectProvider> rops = new ArrayList<ResultObjectProvider>();
      List<SliceStoreManager> targets = findTargets();
      QueryContext ctx = q.getContext();
      boolean isReplicated = containsReplicated(ctx);
            ExecutorService threadPool = SliceThread.getPool();
          
      for (int i = 0; i < owner._queries.size(); i++) {
                // if replicated, then execute only on single slice
        if (isReplicated && !usedExecutors.isEmpty()) {
          break;
        }
                StoreManager sm = owner.getDistributedStore().getSlice(i);
        if (!targets.contains(sm))
          continue;
                QueryExecutor call = new QueryExecutor();
                call.executor = executors.get(i);
                call.query = owner._queries.get(i);
                call.params = params;
                call.range = range;
        usedExecutors.add(call.executor);
                futures.add(threadPool.submit(call));
      }
      for (Future<ResultObjectProvider> future : futures) {
        try {
          rops.add(future.get());
        } catch (InterruptedException e) {
          throw new RuntimeException(e);
        } catch (ExecutionException e) {
          throw new StoreException(e.getCause());
        }
      }
     
      ResultObjectProvider[] tmp = rops.toArray(new ResultObjectProvider[rops.size()]);
      ResultObjectProvider result = null;
      boolean[] ascending = getAscending(q);
      boolean isAscending = ascending.length > 0;
      boolean isAggregate = ctx.isAggregate();
      boolean hasRange = ctx.getEndRange() != Long.MAX_VALUE;
      if (isAggregate) {
        result = new UniqueResultObjectProvider(tmp, q,  getQueryExpressions());
      } else if (isAscending) {
                result = new OrderingMergedResultObjectProvider(tmp, ascending,
                    usedExecutors.toArray(new Executor[usedExecutors.size()]),
          q, params);
      } else {
        result = new MergedResultObjectProvider(tmp);
      }
      if (hasRange) {
                result = new RangeResultObjectProvider(result, ctx.getStartRange(), ctx.getEndRange());
      }
      return result;
    }
View Full Code Here

        private final boolean _select;
        private final boolean _call;   // native call stored procedure
        private final QueryResultMapping _resultMapping;

        public SQLExecutor(SQLStoreQuery q, ClassMetaData candidate) {
            QueryContext ctx = q.getContext();
            String resultMapping = ctx.getResultMappingName();
            if (resultMapping == null)
                _resultMapping = null;
            else {
                ClassLoader envLoader = ctx.getStoreContext().getClassLoader();
                MappingRepository repos = q.getStore().getConfiguration().
                    getMappingRepositoryInstance();
                _resultMapping = repos.getQueryResultMapping
                    (ctx.getResultMappingScope(), resultMapping, envLoader,
                        true);
            }
            _meta = candidate;

            String sql = StringUtils.trimToNull(ctx.getQueryString());
            if (sql == null)
                throw new UserException(_loc.get("no-sql"));
            _select = q.getStore().getDBDictionary().isSelect(sql);
            _call = sql.length() > 4
                && sql.substring(0, 4).equalsIgnoreCase("call");
View Full Code Here

                    new Object[]{ e.toString(), jpql }));
            }
        }

        void populate(ExpressionStoreQuery query) {
            QueryContext ctx = query.getContext();

            // if the owning query's context does not have
            // any candidate class, then set it here
            if (ctx.getCandidateType() == null) {
                if (_candidateType == null)
                    _candidateType = new JPQLExpressionBuilder
                        (null, query, this).getCandidateType();
                ctx.setCandidateType(_candidateType, true);
            }
        }
View Full Code Here

                    new Object[]{ e.toString(), jpql }));
            }
        }

        void populate(ExpressionStoreQuery query) {
            QueryContext ctx = query.getContext();

            // if the owning query's context does not have
            // any candidate class, then set it here
            if (ctx.getCandidateType() == null) {
                if (_candidateType == null)
                    _candidateType = new JPQLExpressionBuilder
                        (null, query, this).getCandidateType();
                ctx.setCandidateType(_candidateType, true);
            }
        }
View Full Code Here

        private final boolean _select;
        private final boolean _call;   // native call stored procedure
        private final QueryResultMapping _resultMapping;

        public SQLExecutor(SQLStoreQuery q, ClassMetaData candidate) {
            QueryContext ctx = q.getContext();
            String resultMapping = ctx.getResultMappingName();
            if (resultMapping == null)
                _resultMapping = null;
            else {
                ClassLoader envLoader = ctx.getStoreContext().getClassLoader();
                MappingRepository repos = q.getStore().getConfiguration().
                    getMappingRepositoryInstance();
                _resultMapping = repos.getQueryResultMapping
                    (ctx.getResultMappingScope(), resultMapping, envLoader,
                        true);
            }
            _meta = candidate;

            String sql = StringUtils.trimToNull(ctx.getQueryString());
            if (sql == null)
                throw new UserException(_loc.get("no-sql"));
            _select = q.getStore().getDBDictionary().isSelect(sql);
            _call = sql.length() > 4
                && sql.substring(0, 4).equalsIgnoreCase("call");
View Full Code Here

        new ArrayList<Future<ResultObjectProvider>>();
            final List<Executor> usedExecutors = new ArrayList<Executor>();
      final List<ResultObjectProvider> rops =
        new ArrayList<ResultObjectProvider>();
      List<SliceStoreManager> targets = findTargets();
      QueryContext ctx = q.getContext();
      boolean isReplicated = containsReplicated(ctx);
            ExecutorService threadPool = SliceThread.getPool();
      for (int i = 0; i < owner._queries.size(); i++) {
                // if replicated, then execute only on single slice
        if (isReplicated && !usedExecutors.isEmpty()) {
          break;
        }
                StoreManager sm = owner.getDistributedStore().getSlice(i);
        if (!targets.contains(sm))
          continue;
        StoreQuery query = owner._queries.get(i);
        Executor executor = executors.get(i);
        if (!targets.contains(sm))
          continue;
        usedExecutors.add(executor);
                QueryExecutor call = new QueryExecutor();
                call.executor = executor;
                call.query = query;
                call.params = params;
                call.range = range;
                futures.add(threadPool.submit(call));
      }
      for (Future<ResultObjectProvider> future : futures) {
        try {
          rops.add(future.get());
        } catch (InterruptedException e) {
          throw new RuntimeException(e);
        } catch (ExecutionException e) {
          throw new StoreException(e.getCause());
        }
      }
     
      ResultObjectProvider[] tmp = rops
                    .toArray(new ResultObjectProvider[rops.size()]);
      ResultObjectProvider result = null;
      boolean[] ascending = getAscending(q);
      boolean isAscending = ascending.length > 0;
      boolean isAggregate = ctx.isAggregate();
      boolean hasRange = ctx.getEndRange() != Long.MAX_VALUE;
      if (isAggregate) {
        result = new UniqueResultObjectProvider(tmp, q,
            getQueryExpressions());
      } else if (isAscending) {
                result = new OrderingMergedResultObjectProvider(tmp, ascending,
                    usedExecutors.toArray(new Executor[usedExecutors.size()]),
          q, params);
      } else {
        result = new MergedResultObjectProvider(tmp);
      }
      if (hasRange) {
                result = new RangeResultObjectProvider(result,
                        ctx.getStartRange(), ctx.getEndRange());
      }
      return result;
    }
View Full Code Here

                    new Object[]{ e.toString(), jpql }));
            }
        }

        void populate(ExpressionStoreQuery query) {
            QueryContext ctx = query.getContext();

            // if the owning query's context does not have
            // any candidate class, then set it here
            if (ctx.getCandidateType() == null) {
                if (_candidateType == null)
                    _candidateType = new JPQLExpressionBuilder
                        (null, query, this).getCandidateType();
                ctx.setCandidateType(_candidateType, true);
            }
        }
View Full Code Here

TOP

Related Classes of org.apache.openjpa.kernel.QueryContext

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.