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); } }
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); } }
/** * 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(); }
/** * 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(); }
@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(); }
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(); } }
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()); } }
queryBuilder.append(" limit ").append(pageable.getOffset()).append(',').append(pageable.getLimit());