offset = query.getStartIndex(); maxFeatures = query.getMaxFeatures() == Integer.MAX_VALUE ? null : query.getMaxFeatures(); if (query.getStartIndex() != null) { if (!source.getQueryCapabilities().isOffsetSupported()) { offset = query.getStartIndex(); maxFeatures = query.getMaxFeatures() == Integer.MAX_VALUE ? null : query.getMaxFeatures();
result.setStartIndex(userQuery.getStartIndex()); result.setSortBy(userQuery.getSortBy());
public IndexUniqueVisitorIterator( FeatureCollection<SimpleFeatureType, SimpleFeature> fc, Query idQuery, String idFieldName) { super(); this.fc = fc; this.idQuery = idQuery; this.idFieldName = idFieldName; this.start = idQuery.getStartIndex() != null ? idQuery.getStartIndex() : 0; this.max = idQuery.getMaxFeatures(); currentVisitorStart = this.start; initVisitor(); }
/** * Applies the limit/offset elements to the query if they are specified and if the dialect * supports them * * @param sql The sql to be modified * @param the query that holds the limit and offset parameters */ public void applyLimitOffset(StringBuffer sql, Query query) { applyLimitOffset(sql, query.getStartIndex(), query.getMaxFeatures()); }
if (size >= 0) { if (query.getStartIndex() != null && txQuery.getStartIndex() == null) { size -= query.getStartIndex();
StringBuffer sql = new StringBuffer(); boolean offsetLimit = checkLimitOffset(query.getStartIndex(), query.getMaxFeatures()); if (offsetLimit) { applyLimitOffset(sql, query.getStartIndex(), query.getMaxFeatures());
/** * Hashcode based on all parameters other than the handle. * * @return hascode for this Query */ @Override public int hashCode() { String[] n = getPropertyNames(); return ((n == null) ? (-1) : ((n.length == 0) ? 0 : (n.length | n[0].hashCode()))) | getMaxFeatures() | ((getFilter() == null) ? 0 : getFilter().hashCode()) | ((getTypeName() == null) ? 0 : getTypeName().hashCode()) | ((getVersion() == null) ? 0 : getVersion().hashCode()) | ((getCoordinateSystem() == null) ? 0 : getCoordinateSystem().hashCode()) | ((getCoordinateSystemReproject() == null) ? 0 : getCoordinateSystemReproject().hashCode()) | getStartIndex(); }
applyLimitOffset(sql, query.getStartIndex(), query.getMaxFeatures());
protected PreparedStatement selectJoinSQLPS( SimpleFeatureType featureType, JoinInfo join, Query query, Connection cx) throws SQLException, IOException { StringBuffer sql = new StringBuffer(); sql.append("SELECT "); selectColumns(featureType, join.getPrimaryAlias(), query, sql); // joined columns for (JoinPart part : join.getParts()) { selectColumns(part.getQueryFeatureType(), part.getAlias(), query, sql); } sql.setLength(sql.length() - 1); dialect.encodePostSelect(featureType, sql); sql.append(" FROM "); // join clauses encodeTableJoin(featureType, join, query, sql); // filtering List<FilterToSQL> toSQLs = encodeWhereJoin(featureType, join, sql); // sorting sort(featureType, query.getSortBy(), join.getPrimaryAlias(), sql); // finally encode limit/offset, if necessary applyLimitOffset(sql, query.getStartIndex(), query.getMaxFeatures()); LOGGER.fine(sql.toString()); PreparedStatement ps = cx.prepareStatement( sql.toString(), ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY); ps.setFetchSize(fetchSize); setPreparedFilterValues(ps, toSQLs, cx); return ps; }
applyLimitOffset(sql, query.getStartIndex(), query.getMaxFeatures());
protected String selectJoinSQL(SimpleFeatureType featureType, JoinInfo join, Query query) throws IOException, SQLException { StringBuffer sql = new StringBuffer(); sql.append("SELECT "); // column names selectColumns(featureType, join.getPrimaryAlias(), query, sql); // joined columns for (JoinPart part : join.getParts()) { selectColumns(part.getQueryFeatureType(), part.getAlias(), query, sql); } sql.setLength(sql.length() - 1); dialect.encodePostSelect(featureType, sql); // from sql.append(" FROM "); // join clauses encodeTableJoin(featureType, join, query, sql); // filtering encodeWhereJoin(featureType, join, sql); // TODO: sorting sort(featureType, query.getSortBy(), join.getPrimaryAlias(), sql); // finally encode limit/offset, if necessary applyLimitOffset(sql, query.getStartIndex(), query.getMaxFeatures()); return sql.toString(); }
if (query.getStartIndex() != null && txQuery.getStartIndex() == null) { for (int i = 0; i < query.getStartIndex() && transformed.hasNext(); i++) { transformed.next();
int start = query.getStartIndex() != null ? query.getStartIndex() : 0; if (sourceFeaturesCounter >= (start + query.getMaxFeatures())) { return false;
if (query.getStartIndex() != null && query.getStartIndex() > 0) { if (query.getStartIndex() > count) count = 0; else count -= query.getStartIndex();
/** * Copy contructor. * * @param query the query to copy */ public Query(Query query) { this( query.getTypeName(), query.getNamespace(), query.getFilter(), query.getMaxFeatures(), query.getProperties(), query.getHandle()); this.sortBy = query.getSortBy(); this.coordinateSystem = query.getCoordinateSystem(); this.coordinateSystemReproject = query.getCoordinateSystemReproject(); this.version = query.getVersion(); this.hints = query.getHints(); this.startIndex = query.getStartIndex(); this.alias = query.getAlias(); this.joins = new ArrayList(); for (Join j : query.getJoins()) { this.joins.add(new Join(j)); } }
: getCoordinateSystemReproject() .equals(other.getCoordinateSystemReproject())) && (getStartIndex() == other.getStartIndex()) && (getHints() == null ? (other.getHints() == null)
|| (query.getStartIndex() != null && query.getStartIndex() > 0 && !canOffset())) {
/** * Copy contructor, clones the state of a generic Query into a DefaultQuery * * @param query */ public DefaultQuery(Query query) { this( query.getTypeName(), query.getNamespace(), query.getFilter(), query.getMaxFeatures(), query.getProperties(), query.getHandle()); this.sortBy = query.getSortBy(); this.coordinateSystem = query.getCoordinateSystem(); this.coordinateSystemReproject = query.getCoordinateSystemReproject(); this.version = query.getVersion(); this.hints = query.getHints(); this.startIndex = query.getStartIndex(); this.alias = query.getAlias(); this.joins = query.getJoins(); } }
private Query namedQuery(Query query) { Query namedQuery = namedQuery( query.getFilter(), query.getMaxFeatures(), query instanceof JoiningQuery); namedQuery.setProperties(query.getProperties()); namedQuery.setCoordinateSystem(query.getCoordinateSystem()); namedQuery.setCoordinateSystemReproject(query.getCoordinateSystemReproject()); namedQuery.setHandle(query.getHandle()); namedQuery.setMaxFeatures(query.getMaxFeatures()); namedQuery.setStartIndex(query.getStartIndex()); namedQuery.setSortBy(query.getSortBy()); namedQuery.setHints(query.getHints()); if (query instanceof JoiningQuery) { ((JoiningQuery) namedQuery).setQueryJoins(((JoiningQuery) query).getQueryJoins()); ((JoiningQuery) namedQuery).setRootMapping(((JoiningQuery) query).getRootMapping()); } return namedQuery; }
if (query.getStartIndex() != null && !caps.isJoiningSupported()) { txQuery.setStartIndex(null);