当前位置: 首页>>代码示例>>Java>>正文


Java Query.clone方法代码示例

本文整理汇总了Java中org.apache.metamodel.query.Query.clone方法的典型用法代码示例。如果您正苦于以下问题:Java Query.clone方法的具体用法?Java Query.clone怎么用?Java Query.clone使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在org.apache.metamodel.query.Query的用法示例。


在下文中一共展示了Query.clone方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: getOptimizedQuery

import org.apache.metamodel.query.Query; //导入方法依赖的package包/类
@Override
public Query getOptimizedQuery() {
    Query query = _baseQuery;

    final Set<Entry<FilterConsumer, FilterOutcome>> entries = _optimizedFilters.entrySet();
    if (!entries.isEmpty()) {
        // create a copy/clone of the original query
        query = query.clone();

        for (final Entry<FilterConsumer, FilterOutcome> entry : entries) {

            final FilterConsumer consumer = entry.getKey();

            final FilterOutcome outcome = entry.getValue();
            final Filter<?> filter = consumer.getComponent();

            @SuppressWarnings("rawtypes") final QueryOptimizedFilter queryOptimizedFilter =
                    (QueryOptimizedFilter) filter;

            @SuppressWarnings("unchecked") final Query newQuery =
                    queryOptimizedFilter.optimizeQuery(query, outcome.getCategory());
            query = newQuery;
        }
    }

    return query;
}
 
开发者ID:datacleaner,项目名称:DataCleaner,代码行数:28,代码来源:RowProcessingQueryOptimizerImpl.java

示例2: createExpectedRowsRef

import org.apache.metamodel.query.Query; //导入方法依赖的package包/类
private Supplier<Integer> createExpectedRowsRef() {
    // TODO: This only seems valid for source tables
    return new LazyRef<Integer>() {

        @Override
        protected Integer fetch() {
            int expectedRows = -1;
            {
                final Query originalQuery = getQuery();
                final Query countQuery = originalQuery.clone();
                countQuery.setMaxRows(null);
                countQuery.setFirstRow(null);
                countQuery.getSelectClause().removeItems();
                countQuery.getOrderByClause().removeItems();
                countQuery.selectCount();
                countQuery.getSelectClause().getItem(0).setFunctionApproximationAllowed(true);

                final Datastore datastore = _publisher.getStream().getAnalysisJob().getDatastore();
                try (DatastoreConnection connection = datastore.openConnection()) {
                    try (DataSet countDataSet = connection.getDataContext().executeQuery(countQuery)) {
                        if (countDataSet.next()) {
                            final Number count =
                                    ConvertToNumberTransformer.transformValue(countDataSet.getRow().getValue(0));
                            if (count != null) {
                                expectedRows = count.intValue();
                            }
                        }
                    }
                }

                final Integer maxRows = originalQuery.getMaxRows();
                if (maxRows != null) {
                    expectedRows = Math.min(expectedRows, maxRows.intValue());
                }
            }

            return expectedRows;
        }
    };
}
 
开发者ID:datacleaner,项目名称:DataCleaner,代码行数:41,代码来源:RowProcessingMetricsImpl.java

示例3: createExpectedRowsRef

import org.apache.metamodel.query.Query; //导入方法依赖的package包/类
private Ref<Integer> createExpectedRowsRef() {
    return new LazyRef<Integer>() {

        @Override
        protected Integer fetch() {
            int expectedRows = -1;
            {
                final Query originalQuery = getQuery();
                final Query countQuery = originalQuery.clone();
                countQuery.setMaxRows(null);
                countQuery.setFirstRow(null);
                countQuery.getSelectClause().removeItems();
                countQuery.getOrderByClause().removeItems();
                countQuery.selectCount();
                countQuery.getSelectClause().getItem(0).setFunctionApproximationAllowed(true);

                final Datastore datastore = _publishers.getDatastore();
                try (final DatastoreConnection connection = datastore.openConnection()) {
                    try (final DataSet countDataSet = connection.getDataContext().executeQuery(countQuery)) {
                        if (countDataSet.next()) {
                            final Number count = ConvertToNumberTransformer.transformValue(countDataSet.getRow()
                                    .getValue(0));
                            if (count != null) {
                                expectedRows = count.intValue();
                            }
                        }
                    }
                }

                final Integer maxRows = originalQuery.getMaxRows();
                if (maxRows != null) {
                    expectedRows = Math.min(expectedRows, maxRows.intValue());
                }
            }

            return expectedRows;
        }
    };
}
 
开发者ID:datacleaner,项目名称:AnalyzerBeans,代码行数:40,代码来源:RowProcessingMetricsImpl.java

示例4: getRowCount

import org.apache.metamodel.query.Query; //导入方法依赖的package包/类
private long getRowCount(Query q) {
    q = q.clone();
    SelectItem countAllItem = SelectItem.getCountAllItem();
    if (q.getGroupByClause().getItemCount() > 0) {
        q = new Query().from(new FromItem(q).setAlias("sq")).select(countAllItem);
    } else {
        q.getSelectClause().removeItems();
        q.select(countAllItem);
    }
    Row row = MetaModelHelper.executeSingleRowQuery(_dataContext, q);
    Number count = (Number) row.getValue(countAllItem);
    return count.longValue();
}
 
开发者ID:apache,项目名称:metamodel,代码行数:14,代码来源:QuerySplitter.java

示例5: rewriteQuery

import org.apache.metamodel.query.Query; //导入方法依赖的package包/类
@Override
public String rewriteQuery(Query query) {
    final Integer firstRow = query.getFirstRow();
    final Integer maxRows = query.getMaxRows();

    if (maxRows == null && (firstRow == null || firstRow.intValue() == 1)) {
        return super.rewriteQuery(query);
    }

    if ((firstRow == null || firstRow.intValue() == 1) && maxRows != null && maxRows > 0) {
        // We prefer to use the "FETCH FIRST [n] ROWS ONLY" approach, if
        // firstRow is not specified.
        return super.rewriteQuery(query) + " FETCH FIRST " + maxRows + " ROWS ONLY";

    } else {
        // build a ROW_NUMBER() query like this:

        // SELECT [original select clause]
        // FROM ([original select clause],
        // ROW_NUMBER() AS metamodel_row_number
        // FROM [remainder of regular query])
        // WHERE metamodel_row_number BETWEEN [firstRow] and [maxRows];

        final Query innerQuery = query.clone();
        innerQuery.setFirstRow(null);
        innerQuery.setMaxRows(null);

        final Query outerQuery = new Query();
        final FromItem subQuerySelectItem = new FromItem(innerQuery).setAlias("metamodel_subquery");
        outerQuery.from(subQuerySelectItem);

        final List<SelectItem> innerSelectItems = innerQuery.getSelectClause().getItems();
        for (SelectItem selectItem : innerSelectItems) {
            outerQuery.select(new SelectItem(selectItem, subQuerySelectItem));
        }

        final String rewrittenOrderByClause = rewriteOrderByClause(innerQuery, innerQuery.getOrderByClause());
        final String rowOver = "ROW_NUMBER() " + "OVER(" + rewrittenOrderByClause + ")";
        innerQuery.select(new SelectItem(rowOver, "metamodel_row_number"));
        innerQuery.getOrderByClause().removeItems();

        final String baseQueryString = rewriteQuery(outerQuery);

        if (maxRows == null) {
            return baseQueryString + " WHERE metamodel_row_number > " + (firstRow - 1);
        }

        return baseQueryString + " WHERE metamodel_row_number BETWEEN " + firstRow + " AND "
                + (firstRow - 1 + maxRows);
    }
}
 
开发者ID:apache,项目名称:metamodel,代码行数:52,代码来源:DB2QueryRewriter.java


注:本文中的org.apache.metamodel.query.Query.clone方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。