/** * If the user desires pagination this method will take the list and break it up into the correct chunk. If not it * will return the whole list. * * @param <T> The type of elements to paginate * @param elements The elements to paginate * @param pageable The pagination parameters or null if no pagination required * @return The final list of qualified names */ public static <T> List<T> paginate( final List<T> elements, @Nullable final Pageable pageable ) { final ImmutableList.Builder<T> results = ImmutableList.builder(); if (pageable != null && pageable.isPageable()) { results.addAll( elements .stream() .skip(pageable.getOffset()) .limit(pageable.getLimit()) .collect(Collectors.toList()) ); } else { results.addAll(elements); } return results.build(); }
private <T> List<T> processPageable(final List<T> partitions, final Pageable pageable) { int limit = pageable.getOffset() + pageable.getLimit(); if (partitions.size() < limit) { limit = partitions.size(); } if (pageable.getOffset() > limit) { return Lists.newArrayList(); } else { return partitions.subList(pageable.getOffset(), limit); } }
queryBuilder.toString(), params.toArray(oParams), resultSetExtractor); if (pageable != null && pageable.isPageable() && !Strings.isNullOrEmpty(filterExpression)) { partitions = processPageable(partitions, pageable);
@SuppressWarnings("checkstyle:methodname") private List<String> _getPartitionUris( final String catalogName, final String databaseName, final String tableName, @Nullable final String sortBy, @Nullable final SortOrder sortOrder, @Nullable final Integer offset, @Nullable final Integer limit, @Nullable final GetPartitionsRequestDto getPartitionsRequestDto ) { final QualifiedName name = this.requestWrapper.qualifyName( () -> QualifiedName.ofTable(catalogName, databaseName, tableName) ); return this.requestWrapper.processRequest( name, "getPartitionUris", () -> this.partitionService.getPartitionUris( name, new Sort(sortBy, sortOrder), new Pageable(limit, offset), getPartitionsRequestDto ) ); }
private <T> List<T> processPageable(final List<T> partitions, final Pageable pageable) { int limit = pageable.getOffset() + pageable.getLimit(); if (partitions.size() < limit) { limit = partitions.size(); } if (pageable.getOffset() > limit) { return Lists.newArrayList(); } else { return partitions.subList(pageable.getOffset(), limit); } }
queryBuilder.toString(), params.toArray(oParams), resultSetExtractor); if (pageable != null && pageable.isPageable() && !Strings.isNullOrEmpty(filterExpression)) { partitions = processPageable(partitions, pageable);
@SuppressWarnings("checkstyle:methodname") private List<String> _getPartitionKeys( final String catalogName, final String databaseName, final String tableName, @Nullable final String sortBy, @Nullable final SortOrder sortOrder, @Nullable final Integer offset, @Nullable final Integer limit, @Nullable final GetPartitionsRequestDto getPartitionsRequestDto ) { final QualifiedName name = this.requestWrapper.qualifyName( () -> QualifiedName.ofTable(catalogName, databaseName, tableName) ); return this.requestWrapper.processRequest( name, "getPartitionKeys", () -> partitionService.getPartitionKeys( name, new Sort(sortBy, sortOrder), new Pageable(limit, offset), getPartitionsRequestDto ) ); }
/** * If the user desires pagination this method will take the list and break it up into the correct chunk. If not it * will return the whole list. * * @param <T> The type of elements to paginate * @param elements The elements to paginate * @param pageable The pagination parameters or null if no pagination required * @return The final list of qualified names */ public static <T> List<T> paginate( final List<T> elements, @Nullable final Pageable pageable ) { final ImmutableList.Builder<T> results = ImmutableList.builder(); if (pageable != null && pageable.isPageable()) { results.addAll( elements .stream() .skip(pageable.getOffset()) .limit(pageable.getLimit()) .collect(Collectors.toList()) ); } else { results.addAll(elements); } return results.build(); }
partitions = (List) jdbcTemplate.query( auditTableQueryBuilder.toString(), params.toArray(oParams), resultSetExtractor); if (pageable != null && pageable.isPageable() && !Strings.isNullOrEmpty(filterExpression)) { partitions = processPageable(partitions, pageable);
@SuppressWarnings("checkstyle:methodname") private List<String> _getMViewPartitionKeys( final String catalogName, final String databaseName, final String tableName, final String viewName, @Nullable final String sortBy, @Nullable final SortOrder sortOrder, @Nullable final Integer offset, @Nullable final Integer limit, @Nullable final GetPartitionsRequestDto getPartitionsRequestDto ) { final QualifiedName name = this.requestWrapper.qualifyName( () -> QualifiedName.ofView(catalogName, databaseName, tableName, viewName) ); return this.requestWrapper.processRequest( name, "getMViewPartitionKeys", () -> this.mViewService.getPartitionKeys( name, new Sort(sortBy, sortOrder), new Pageable(limit, offset), getPartitionsRequestDto ) ); }
@Override public List<Table> searchBySourceDatabaseTableName(final String sourceName, final String databaseName, final String tableNamePrefix, final Sort sort, final Pageable pageable) { final StringBuilder queryBuilder = new StringBuilder(SQL_SEARCH_TABLES); if (sort != null && sort.hasSort()) { queryBuilder.append(" order by ").append(sort.getSortBy()).append(" ").append(sort.getOrder().name()); } final TypedQuery<Table> query = em.get().createQuery(queryBuilder.toString(), Table.class); query.setParameter("sourceName", sourceName); query.setParameter("databaseName", databaseName); query.setParameter("isTableNameNull", tableNamePrefix == null ? 1 : 0); query.setParameter("tableName", tableNamePrefix + "%"); if (pageable != null && pageable.isPageable()) { query.setFirstResult(pageable.getOffset()); query.setMaxResults(pageable.getLimit()); } return query.getResultList(); }
partitions = (List) jdbcTemplate.query( auditTableQueryBuilder.toString(), params.toArray(oParams), resultSetExtractor); if (pageable != null && pageable.isPageable() && !Strings.isNullOrEmpty(filterExpression)) { partitions = processPageable(partitions, pageable);
@SuppressWarnings("checkstyle:methodname") private List<String> _getMViewPartitionUris( final String catalogName, final String databaseName, final String tableName, final String viewName, @Nullable final String sortBy, @Nullable final SortOrder sortOrder, @Nullable final Integer offset, @Nullable final Integer limit, @Nullable final GetPartitionsRequestDto getPartitionsRequestDto ) { final QualifiedName name = this.requestWrapper.qualifyName( () -> QualifiedName.ofView(catalogName, databaseName, tableName, viewName) ); return this.requestWrapper.processRequest( name, "getMViewPartitionUris", () -> this.mViewService.getPartitionUris( name, new Sort(sortBy, sortOrder), new Pageable(limit, offset), getPartitionsRequestDto ) ); }
private void addSortPageableFilter( final StringBuilder queryBuilder, @Nullable final String filterExpression, @Nullable final Sort sort, @Nullable final Pageable pageable ) { if (sort != null && sort.hasSort()) { queryBuilder.append(" order by ").append(sort.getSortBy()).append(" ").append(sort.getOrder().name()); } if (pageable != null && pageable.isPageable() && Strings.isNullOrEmpty(filterExpression)) { if (sort == null || !sort.hasSort()) { queryBuilder.append(" order by id"); //this must be id, which is used by AuditTable and regular table pagination } queryBuilder.append(" limit ").append(pageable.getOffset()).append(',').append(pageable.getLimit()); } }
&& (pageable == null || !pageable.isPageable()) && (partitionNames == null || partitionNames.isEmpty()) && config.getNamesToThrowErrorOnListPartitionsWithNoFilter().contains(name)) {
name, new Sort(sortBy, sortOrder), new Pageable(limit, offset), includeUserMetadata, includeUserMetadata, name, new Sort(sortBy, sortOrder), new Pageable(limit, offset), includeUserMetadata, new GetPartitionsRequestDto(filter, null, false, true) name, new Sort(sortBy, sortOrder), new Pageable(limit, offset), includeUserMetadata, includeUserMetadata, name, new Sort(sortBy, sortOrder), new Pageable(limit, offset), includeUserMetadata, getPartitionsRequestDto
private void addSortPageableFilter( final StringBuilder queryBuilder, @Nullable final String filterExpression, @Nullable final Sort sort, @Nullable final Pageable pageable ) { if (sort != null && sort.hasSort()) { queryBuilder.append(" order by ").append(sort.getSortBy()).append(" ").append(sort.getOrder().name()); } if (pageable != null && pageable.isPageable() && Strings.isNullOrEmpty(filterExpression)) { if (sort == null || !sort.hasSort()) { queryBuilder.append(" order by id"); //this must be id, which is used by AuditTable and regular table pagination } queryBuilder.append(" limit ").append(pageable.getOffset()).append(',').append(pageable.getLimit()); } }
@Override public List<Database> searchBySourceDatabaseName(final String sourceName, final String databaseNamePrefix, final Sort sort, final Pageable pageable) { final StringBuilder queryBuilder = new StringBuilder(SQL_SEARCH_DATABASES); if (sort != null && sort.hasSort()) { queryBuilder.append(" order by ").append(sort.getSortBy()).append(" ").append(sort.getOrder().name()); } // entityManager final EntityManager entityManager = em.get(); final TypedQuery<Database> pQuery = entityManager.createQuery(queryBuilder.toString(), Database.class); pQuery.setParameter("sourceName", sourceName); pQuery.setParameter("isNameNull", databaseNamePrefix == null ? 1 : 0); pQuery.setParameter("databaseName", databaseNamePrefix + "%"); if (pageable != null && pageable.isPageable()) { pQuery.setFirstResult(pageable.getOffset()); pQuery.setMaxResults(pageable.getLimit()); } return pQuery.getResultList(); } }
queryBuilder.append(" order by ").append(sort.getSortBy()).append(" ").append(sort.getOrder().name()); if (pageable != null && pageable.isPageable()) { queryBuilder.append(" limit ").append(pageable.getOffset()).append(',').append(pageable.getLimit());