@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 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 @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 public void testSettingCurrentItemCountExplicitly() throws Exception { reader.setCurrentItemCount(3); reader.setPageSize(2); PageRequest request = PageRequest.of(1, 2, new Sort(Direction.ASC, "id")); when(repository.findAll(request)).thenReturn(new PageImpl<>(new ArrayList<Object>() {{ add("3"); add("4"); }})); request = PageRequest.of(2, 2, new Sort(Direction.ASC, "id")); when(repository.findAll(request)).thenReturn(new PageImpl<>(new ArrayList<Object>(){{ add("5"); add("6"); }})); reader.open(new ExecutionContext()); Object result = reader.read(); assertEquals("3", result); assertEquals("4", reader.read()); assertEquals("5", reader.read()); assertEquals("6", reader.read()); }
@Test public void testResetOfPage() throws Exception { reader.setPageSize(2); PageRequest request = PageRequest.of(0, 2, new Sort(Direction.ASC, "id")); when(repository.findAll(request)).thenReturn(new PageImpl<>(new ArrayList<Object>(){{ add("1"); add("2"); }})); request = PageRequest.of(1, 2, new Sort(Direction.ASC, "id")); when(repository.findAll(request)).thenReturn(new PageImpl<>(new ArrayList<Object>() {{ add("3"); add("4"); }})); ExecutionContext executionContext = new ExecutionContext(); reader.open(executionContext); Object result = reader.read(); reader.close(); assertEquals("1", result); reader.open(executionContext); assertEquals("1", reader.read()); assertEquals("2", reader.read()); assertEquals("3", reader.read()); }
@Test public void testSettingCurrentItemCountRestart() throws Exception { reader.setCurrentItemCount(3); reader.setPageSize(2); PageRequest request = PageRequest.of(1, 2, new Sort(Direction.ASC, "id")); when(repository.findAll(request)).thenReturn(new PageImpl<>(new ArrayList<Object>(){{ add("3"); add("4"); }})); request = PageRequest.of(2, 2, new Sort(Direction.ASC, "id")); when(repository.findAll(request)).thenReturn(new PageImpl<>(new ArrayList<Object>() {{ add("5"); add("6"); }})); ExecutionContext executionContext = new ExecutionContext(); reader.open(executionContext); Object result = reader.read(); reader.update(executionContext); reader.close(); assertEquals("3", result); reader.open(executionContext); assertEquals("4", reader.read()); assertEquals("5", reader.read()); assertEquals("6", reader.read()); }
/** * {@inheritDoc} */ @Override public Iterable<T> findAll() { return repository.findAll(); }
/** * {@inheritDoc} */ @Override public Iterable<T> findAll() { return repository.findAll(); }
/** * {@inheritDoc} */ @Override public Iterable<T> findByIds(Set<ID> ids) { Assert.notNull(ids, "Resource ids can't be null"); return repository.findAll(ids); }
/** * {@inheritDoc} */ @Override public Page<T> findAll(Pageable pageRequest) { Assert.notNull(pageRequest, "page request can't be null"); return repository.findAll(pageRequest); }
/** * {@inheritDoc} */ @Override public Iterable<T> findByIds(@RequestParam(value="ids[]") Set<ID> ids){ Assert.notNull(ids, "ids list cannot be null"); return this.repository.findAll(ids); }
/** * {@inheritDoc} */ @Override public void delete() { Iterable<T> list = repository.findAll(); for (T entity : list) { repository.delete(entity); } }
/** * {@inheritDoc} */ @Override @Transactional public void deleteAllWithCascade() { Iterable<T> list = repository.findAll(); for (T entity : list) { repository.delete(entity); } }
@Override public Iterable<Object> invokeFindAll(Sort sort) { return customFindAll ? invokeFindAllReflectively(sort) : repository.findAll(sort); }
@Override public Iterable<Object> invokeFindAll(Pageable pageable) { return customFindAll ? invokeFindAllReflectively(pageable) : repository.findAll(pageable); }
/** * {@inheritDoc} */ @Override public Page<T> findPaginated(@RequestParam(value = "page", required = false, defaultValue = "1") Integer page, @RequestParam(value = "size", required = false, defaultValue = "10") Integer size, @RequestParam(value = "direction", required = false, defaultValue = "") String direction, @RequestParam(value = "properties", required = false) String properties) { Assert.isTrue(page > 0, "Page index must be greater than 0"); Assert.isTrue(direction.isEmpty() || direction.equalsIgnoreCase(Sort.Direction.ASC.toString()) || direction.equalsIgnoreCase(Sort.Direction.DESC.toString()), "Direction should be ASC or DESC"); if(direction.isEmpty()) { return this.repository.findAll(new PageRequest(page - 1, size)); } else { Assert.notNull(properties); return this.repository.findAll(new PageRequest(page - 1, size, new Sort(Sort.Direction.fromString(direction.toUpperCase()), properties.split(",")))); } }
/** * Implementation of reading of a page. */ @Override protected void doReadPage() { LOG.info("Read page {} ", getPage()); if (this.results == null) { this.results = new CopyOnWriteArrayList<>(); } else { this.results.clear(); } Page<T> page = repository.findAll(new PageRequest(getPage(), getPageSize())); if (LOG.isInfoEnabled() && page.iterator().hasNext()) { T item = page.iterator().next(); currentItemClass = (Class<T>) item.getClass(); } LOG.info("Read {} {}", page.getNumber(), currentItemClass); this.results.addAll(page.getContent()); }