public PagingOffset getOffset(String identifier, boolean descending) { Integer offset = pagingIdentifiers.get(identifier); if (offset == null) { offset = PagingOffset.toOffset(0, descending); } else if (fromNext) { offset = descending ? offset - 1 : offset + 1; } return PagingOffset.of(offset, threshold); }
private Map<String, Integer> toPagingIdentifier(int startDelta, boolean descending) { return ImmutableMap.of(segmentIdString, PagingOffset.toOffset(startDelta, descending)); }
@Test public void testDescending() { PagingOffset offset = PagingOffset.of(PagingOffset.toOffset(3, true), 3); Assert.assertEquals(-4, offset.startOffset()); Assert.assertEquals(3, offset.startDelta()); Assert.assertArrayEquals(new int[]{-4, -5, -6}, toArray(offset)); }
@Test public void testAscending() { PagingOffset offset = PagingOffset.of(PagingOffset.toOffset(3, false), 3); Assert.assertEquals(3, offset.startOffset()); Assert.assertEquals(3, offset.startDelta()); Assert.assertArrayEquals(new int[]{3, 4, 5}, toArray(offset)); }
@Test public void testZeroThreshold() { PagingOffset offset = PagingOffset.of(PagingOffset.toOffset(3, false), 0); Assert.assertEquals(3, offset.startOffset()); Assert.assertEquals(3, offset.startDelta()); Assert.assertArrayEquals(new int[]{}, toArray(offset)); offset = PagingOffset.of(PagingOffset.toOffset(3, true), 0); Assert.assertEquals(-4, offset.startOffset()); Assert.assertEquals(3, offset.startDelta()); Assert.assertArrayEquals(new int[]{}, toArray(offset)); }
public PagingOffset getOffset(String identifier, boolean descending) { Integer offset = pagingIdentifiers.get(identifier); if (offset == null) { offset = PagingOffset.toOffset(0, descending); } else if (fromNext) { offset = descending ? offset - 1 : offset + 1; } return PagingOffset.of(offset, threshold); }