public PageDTO(List<T> content, Pageable pageable, long total) { this.total = total; this.content = content; this.page = pageable.getPageNumber(); this.size = pageable.getPageSize(); }
@Test public void testDoReadFirstReadNoResults() throws Exception { ArgumentCaptor<PageRequest> pageRequestContainer = ArgumentCaptor.forClass(PageRequest.class); when(repository.findAll(pageRequestContainer.capture())).thenReturn(new PageImpl<>(new ArrayList<>())); assertNull(reader.doRead()); Pageable pageRequest = pageRequestContainer.getValue(); assertEquals(0, pageRequest.getOffset()); assertEquals(0, pageRequest.getPageNumber()); assertEquals(1, pageRequest.getPageSize()); assertEquals("id: ASC", pageRequest.getSort().toString()); }
@Test @SuppressWarnings("serial") public void testDoReadFirstReadExhausted() throws Exception { ArgumentCaptor<PageRequest> pageRequestContainer = ArgumentCaptor.forClass(PageRequest.class); final Object result = new Object(); when(repository.findAll(pageRequestContainer.capture())).thenReturn(new PageImpl<>(new ArrayList<Object>() {{ add(new Object()); }})).thenReturn(new PageImpl<>(new ArrayList<Object>(){{ add(result); }})).thenReturn(new PageImpl<>(new ArrayList<>())); assertFalse(reader.doRead() == result); assertEquals(result, reader.doRead()); assertNull(reader.doRead()); Pageable pageRequest = pageRequestContainer.getValue(); assertEquals(2, pageRequest.getOffset()); assertEquals(2, pageRequest.getPageNumber()); assertEquals(1, pageRequest.getPageSize()); assertEquals("id: ASC", pageRequest.getSort().toString()); }
@Test @SuppressWarnings("serial") public void testDoReadFirstReadResults() throws Exception { ArgumentCaptor<PageRequest> pageRequestContainer = ArgumentCaptor.forClass(PageRequest.class); final Object result = new Object(); when(repository.findAll(pageRequestContainer.capture())).thenReturn(new PageImpl<>(new ArrayList<Object>(){{ add(result); }})); assertEquals(result, reader.doRead()); Pageable pageRequest = pageRequestContainer.getValue(); assertEquals(0, pageRequest.getOffset()); assertEquals(0, pageRequest.getPageNumber()); assertEquals(1, pageRequest.getPageSize()); assertEquals("id: ASC", pageRequest.getSort().toString()); }
@Test @SuppressWarnings("serial") public void testDoReadFirstReadSecondPage() throws Exception { ArgumentCaptor<PageRequest> pageRequestContainer = ArgumentCaptor.forClass(PageRequest.class); final Object result = new Object(); when(repository.findAll(pageRequestContainer.capture())).thenReturn(new PageImpl<>(new ArrayList<Object>() {{ add(new Object()); }})).thenReturn(new PageImpl<>(new ArrayList<Object>(){{ add(result); }})); assertFalse(reader.doRead() == result); assertEquals(result, reader.doRead()); Pageable pageRequest = pageRequestContainer.getValue(); assertEquals(1, pageRequest.getOffset()); assertEquals(1, pageRequest.getPageNumber()); assertEquals(1, pageRequest.getPageSize()); assertEquals("id: ASC", pageRequest.getSort().toString()); }
@Test @SuppressWarnings("serial") public void testJumpToItem() throws Exception { reader.setPageSize(100); ArgumentCaptor<PageRequest> pageRequestContainer = ArgumentCaptor.forClass(PageRequest.class); when(repository.findAll(pageRequestContainer.capture())).thenReturn(new PageImpl<>(new ArrayList<Object>() {{ add(new Object()); }})); reader.jumpToItem(485); Pageable pageRequest = pageRequestContainer.getValue(); assertEquals(400, pageRequest.getOffset()); assertEquals(4, pageRequest.getPageNumber()); assertEquals(100, pageRequest.getPageSize()); assertEquals("id: ASC", pageRequest.getSort().toString()); }
@Test public void testDifferentTypes() throws Exception { TestRepository differentRepository = mock(TestRepository.class); RepositoryItemReader<String> reader = new RepositoryItemReader<>(); sorts = new HashMap<>(); sorts.put("id", Direction.ASC); reader.setRepository(differentRepository); reader.setPageSize(1); reader.setSort(sorts); reader.setMethodName("findFirstNames"); ArgumentCaptor<PageRequest> pageRequestContainer = ArgumentCaptor.forClass(PageRequest.class); when(differentRepository.findFirstNames(pageRequestContainer.capture())).thenReturn(new PageImpl<>(new ArrayList<String>(){{ add("result"); }})); assertEquals("result", reader.doRead()); Pageable pageRequest = pageRequestContainer.getValue(); assertEquals(0, pageRequest.getOffset()); assertEquals(0, pageRequest.getPageNumber()); assertEquals(1, pageRequest.getPageSize()); assertEquals("id: ASC", pageRequest.getSort().toString()); }
startRecord = query.getPageable().getPageNumber() * query.getPageable().getPageSize(); sourceBuilder.size(query.getPageable().getPageSize());
public Pagination getPagination(Pageable pageable, boolean forSlicing) { Pagination pagination = new Pagination(pageable.getPageNumber(), pageable.getPageSize() + ((forSlicing) ? 1 : 0)); pagination.setOffset(pageable.getPageNumber() * pageable.getPageSize()); return pagination; }
private String addPaging(String cypherQuery, Pageable pageable, boolean forSlicing) { // Custom queries in the OGM do not support pageable cypherQuery = formatBaseQuery(cypherQuery); cypherQuery = cypherQuery + SKIP_LIMIT; parameters.put(SKIP, pageable.getPageNumber() * pageable.getPageSize()); if (forSlicing) { parameters.put(LIMIT, pageable.getPageSize() + 1); } else { parameters.put(LIMIT, pageable.getPageSize()); } return cypherQuery; }
@Override public Page<T> findAll(Pageable pageable, int depth) { Pagination pagination = new Pagination(pageable.getPageNumber(), pageable.getPageSize()); Collection<T> data = session.loadAll(clazz, PagingAndSortingUtils.convert(pageable.getSort()), pagination, depth); return PageableExecutionUtils.getPage(new ArrayList<>(data), pageable, () -> session.countEntitiesOfType(clazz)); } }
@Override public Pageable resolveArgument(MethodParameter methodParameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) { Pageable pageable = delegate.resolveArgument(methodParameter, mavContainer, webRequest, binderFactory); if (pageable == null || pageable.getSort() == null) { return pageable; } Sort translated = translator.translateSort(pageable.getSort(), methodParameter, webRequest); return PageRequest.of(pageable.getPageNumber(), pageable.getPageSize(), translated); } }
@Override public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception { Pageable pageable = delegate.resolveArgument(parameter, mavContainer, webRequest, binderFactory); if (pageable == null || pageable.getSort() == null) { return new DefaultedPageable(pageable, delegate.isFallbackPageable(pageable)); } Sort translated = translator.translateSort(pageable.getSort(), parameter, webRequest); pageable = PageRequest.of(pageable.getPageNumber(), pageable.getPageSize(), translated); return new DefaultedPageable(pageable, delegate.isFallbackPageable(pageable)); } }
/** * Construct a page request from a pageable with an optional keyset page that may be used for keyset pagination. * * @param keysetPage The keyset page * @param pageable The pageable */ public KeysetPageRequest(KeysetPage keysetPage, Pageable pageable) { super(pageable.getPageNumber(), pageable.getPageSize(), pageable.getSort()); this.keysetPage = keysetPage; this.offset = pageable.getPageNumber() * pageable.getPageSize(); }
@Override public Object execute(DocumentQuery query, Class<?> type, String collection) { if (pageable.getPageNumber() != 0 && !(pageable instanceof DocumentDbPageRequest)) { throw new IllegalStateException("Not the first page but Pageable is not a valid " + "DocumentDbPageRequest, requestContinuation is required for non first page request"); } query.with(pageable); return operations.paginationQuery(query, type, collection); } }
@Override public Page<AppStatus> getAppStatuses(Pageable pageable) { List<String> skipperStreams = new ArrayList<>(); Iterable<StreamDefinition> streamDefinitions = this.streamDefinitionRepository.findAll(); for (StreamDefinition streamDefinition : streamDefinitions) { skipperStreams.add(streamDefinition.getName()); } List<AppStatus> allStatuses = getStreamsStatuses(skipperStreams); List<AppStatus> pagedStatuses = allStatuses.stream().skip(pageable.getPageNumber() * pageable.getPageSize()) .limit(pageable.getPageSize()).parallel().collect(Collectors.toList()); return new PageImpl<>(pagedStatuses, pageable, allStatuses.size()); }
@Override protected String limitClause(Pageable page) { final int offset = page.getPageNumber() * page.getPageSize(); return " LIMIT " + page.getPageSize() + " OFFSET " + offset; } }
public Pagination getPagination(Pageable pageable, boolean forSlicing) { Pagination pagination = new Pagination(pageable.getPageNumber(), pageable.getPageSize() + ((forSlicing) ? 1 : 0)); pagination.setOffset(pageable.getPageNumber() * pageable.getPageSize()); return pagination; }
private String addPaging(String cypherQuery, Pageable pageable, boolean forSlicing) { // Custom queries in the OGM do not support pageable cypherQuery = formatBaseQuery(cypherQuery); cypherQuery = cypherQuery + SKIP_LIMIT; parameters.put(SKIP, pageable.getPageNumber() * pageable.getPageSize()); if (forSlicing) { parameters.put(LIMIT, pageable.getPageSize() + 1); } else { parameters.put(LIMIT, pageable.getPageSize()); } return cypherQuery; }
@Override public <T> Page<T> getPage(Class<T> clazz, Criteria criteria, Pageable pageable) { Criteria countCriteria = HibernateTool.copyCriteria(criteria); long totalItemCount = count(countCriteria); List<T> items = find(clazz, criteria, pageable.getPageNumber() * pageable.getPageSize(), pageable.getPageSize(), CriteriaTool.toOrders(pageable.getSort()).toArray(new Order[0])); return new PageImpl<T>(items, pageable, totalItemCount); }