private Optional<String> getPhotosPaginationToken(Optional<PaginationData> paginationData) { Optional<String> paginationToken = Optional.empty(); if (paginationData.isPresent()) { String token = ((StringPaginationToken) paginationData.get()).getToken(); Preconditions .checkArgument(token.startsWith(PHOTO_TOKEN_PREFIX), "Invalid pagination token " + token); if (token.length() > PHOTO_TOKEN_PREFIX.length()) { paginationToken = Optional.of(token.substring(PHOTO_TOKEN_PREFIX.length())); } } return paginationToken; }
private Optional<String> stripTokenPrefix( Optional<StringPaginationToken> paginationData, String prefix) { Optional<String> paginationToken = Optional.empty(); if (paginationData.isPresent()) { String token = paginationData.get().getToken(); Preconditions.checkArgument(token.startsWith(prefix), "Invalid pagination token " + token); paginationToken = Optional.of(token.substring(prefix.length())); } return paginationToken; }
@Override public ExportResult<CalendarContainerResource> export( UUID jobId, TokensAndUrlAuthData authData, Optional<ExportInformation> exportInformation) { if (!exportInformation.isPresent()) { return exportCalendars(authData, Optional.empty()); } else { StringPaginationToken paginationToken = (StringPaginationToken) exportInformation.get().getPaginationData(); if (paginationToken != null && paginationToken.getToken().startsWith(CALENDAR_TOKEN_PREFIX)) { // Next thing to export is more calendars return exportCalendars(authData, Optional.of(paginationToken)); } else { // Next thing to export is events IdOnlyContainerResource idOnlyContainerResource = (IdOnlyContainerResource) exportInformation.get().getContainerResource(); Optional<PaginationData> pageData = Optional.ofNullable(paginationToken); return getCalendarEvents(authData, idOnlyContainerResource.getId(), pageData); } } }
&& paginationDataPresent && paginationToken.getToken().startsWith(ALBUM_TOKEN_PREFIX)) { return exportAlbums(authData, Optional.of(paginationToken)); } else {
&& paginationToken.getToken().startsWith(ALBUM_TOKEN_PREFIX)) {
Optional<String> paginationToken = Optional.empty(); if (paginationData.isPresent()) { String token = ((StringPaginationToken) paginationData.get()).getToken(); Preconditions.checkArgument( token.startsWith(ALBUM_TOKEN_PREFIX), "Invalid pagination token " + token);
private ExportResult<TaskContainerResource> getTasksList( Tasks tasksService, Optional<PaginationData> paginationData) throws IOException { Tasks.Tasklists.List query = tasksService.tasklists().list().setMaxResults(PAGE_SIZE); if (paginationData.isPresent()) { query.setPageToken(((StringPaginationToken) paginationData.get()).getToken()); } TaskLists result = query.execute(); ImmutableList.Builder<TaskListModel> newTaskListsBuilder = ImmutableList.builder(); ImmutableList.Builder<IdOnlyContainerResource> newResourcesBuilder = ImmutableList.builder(); for (TaskList taskList : result.getItems()) { newTaskListsBuilder.add(new TaskListModel(taskList.getId(), taskList.getTitle())); newResourcesBuilder.add(new IdOnlyContainerResource(taskList.getId())); } PaginationData newPage = null; ResultType resultType = ResultType.END; if (result.getNextPageToken() != null) { newPage = new StringPaginationToken(result.getNextPageToken()); resultType = ResultType.CONTINUE; } List<IdOnlyContainerResource> newResources = newResourcesBuilder.build(); if (!newResources.isEmpty()) { resultType = ResultType.CONTINUE; } TaskContainerResource taskContainerResource = new TaskContainerResource(newTaskListsBuilder.build(), null); ContinuationData continuationData = new ContinuationData(newPage); newResourcesBuilder.build().forEach(continuationData::addContainerResource); return new ExportResult<>(resultType, taskContainerResource, continuationData); }
StringPaginationToken paginationToken = (StringPaginationToken) pageData.get(); Preconditions.checkState( paginationToken.getToken().startsWith(CALENDAR_TOKEN_PREFIX), "Token is not applicable"); listRequest.setPageToken( ((StringPaginationToken) pageData.get()) .getToken() .substring(CALENDAR_TOKEN_PREFIX.length()));
@Override public ExportResult<SocialActivityContainerResource> export( UUID jobId, TokensAndUrlAuthData authData, Optional<ExportInformation> exportInformation) throws IOException { Plus plus = getOrCreatePeopleService(authData); Plus.Activities.List listActivities = plus.activities().list("me", "public"); if (exportInformation.isPresent()) { StringPaginationToken pageToken = (StringPaginationToken) exportInformation.get().getPaginationData(); listActivities.setPageToken(pageToken.getToken()); } ActivityFeed activityFeed = listActivities.execute(); List<Activity> activities = activityFeed.getItems(); ContinuationData continuationData = null; SocialActivityContainerResource results = null; if (activities != null && !activities.isEmpty()) { List<com.ibm.common.activitystreams.Activity> parsedActivities = new ArrayList<>(); continuationData = new ContinuationData(new StringPaginationToken(activityFeed.getNextPageToken())); for (Activity activity : activities) { parsedActivities.add(postToActivityStream(activity)); } results = new SocialActivityContainerResource(jobId.toString(), parsedActivities, null); } return new ExportResult<>( ResultType.CONTINUE, results, continuationData); }
query.setPageToken(((StringPaginationToken) paginationData.get()).getToken());
@Test public void exportAlbumSubsequentSet() throws IOException { setUpSingleAlbum(); when(albumListResponse.getNextPageToken()).thenReturn(null); StringPaginationToken inputPaginationToken = new StringPaginationToken(ALBUM_TOKEN_PREFIX + ALBUM_TOKEN); // Run test ExportResult<PhotosContainerResource> result = googlePhotosExporter .exportAlbums(null, Optional.of(inputPaginationToken)); // Check results // Verify correct methods were called verify(photosInterface).listAlbums(Optional.of(ALBUM_TOKEN)); verify(albumListResponse).getAlbums(); // Check pagination token - should be absent ContinuationData continuationData = result.getContinuationData(); StringPaginationToken paginationData = (StringPaginationToken) continuationData .getPaginationData(); assertThat(paginationData.getToken()).isEqualTo(GooglePhotosExporter.PHOTO_TOKEN_PREFIX); }
String pageToken = paginationData.getToken(); Preconditions.checkState( pageToken.startsWith(ALBUM_TOKEN_PREFIX), "Invalid pagination token " + pageToken);
@Test public void exportPhotoFirstSet() throws IOException { setUpSingleAlbum(); when(albumListResponse.getNextPageToken()).thenReturn(null); GoogleMediaItem mediaItem = setUpSinglePhoto(IMG_URI, PHOTO_ID); when(mediaItemSearchResponse.getMediaItems()).thenReturn(new GoogleMediaItem[]{mediaItem}); when(mediaItemSearchResponse.getNextPageToken()).thenReturn(PHOTO_TOKEN); IdOnlyContainerResource idOnlyContainerResource = new IdOnlyContainerResource(ALBUM_ID); ExportResult<PhotosContainerResource> result = googlePhotosExporter .exportPhotos(null, Optional.of(idOnlyContainerResource), Optional.empty(), uuid); // Check results // Verify correct methods were called verify(photosInterface).listMediaItems(Optional.of(ALBUM_ID), Optional.empty()); verify(mediaItemSearchResponse).getMediaItems(); // Check pagination ContinuationData continuationData = result.getContinuationData(); StringPaginationToken paginationToken = (StringPaginationToken) continuationData.getPaginationData(); assertThat(paginationToken.getToken()).isEqualTo(PHOTO_TOKEN_PREFIX + PHOTO_TOKEN); // Check albums field of container (should be empty) Collection<PhotoAlbum> actualAlbums = result.getExportedData().getAlbums(); assertThat(actualAlbums).isEmpty(); // Check photos field of container Collection<PhotoModel> actualPhotos = result.getExportedData().getPhotos(); assertThat(actualPhotos.stream().map(PhotoModel::getFetchableUrl).collect(Collectors.toList())) .containsExactly(IMG_URI + "=d"); // for download assertThat(actualPhotos.stream().map(PhotoModel::getAlbumId).collect(Collectors.toList())) .containsExactly(ALBUM_ID); }
StringPaginationToken paginationToken = (StringPaginationToken) continuationData.getPaginationData(); assertThat(paginationToken.getToken()).isEqualTo(NEXT_TOKEN);
StringPaginationToken paginationToken = (StringPaginationToken) continuationData.getPaginationData(); assertThat(paginationToken.getToken()).isEqualTo(EVENT_TOKEN_PREFIX + NEXT_TOKEN);
StringPaginationToken paginationToken = (StringPaginationToken) continuationData.getPaginationData(); assertThat(paginationToken.getToken()).isEqualTo(ALBUM_TOKEN_PREFIX + ALBUM_TOKEN);
StringPaginationToken paginationToken = (StringPaginationToken) continuationData.getPaginationData(); assertThat(paginationToken.getToken()).isEqualTo(CALENDAR_TOKEN_PREFIX + NEXT_TOKEN);
@Test public void exportFirstPage() throws IOException { setUpSinglePersonResponse(); // Looking at first page, with at least one page after it listConnectionsResponse.setNextPageToken(NEXT_PAGE_TOKEN); ExportResult<ContactsModelWrapper> result = contactsService.export(UUID.randomUUID(), null, Optional.empty()); // Check that correct methods were called verify(connections).list(SELF_RESOURCE); InOrder inOrder = Mockito.inOrder(getBatchGet); inOrder.verify(getBatchGet).setResourceNames(Collections.singletonList(RESOURCE_NAME)); inOrder.verify(getBatchGet).setPersonFields(PERSON_FIELDS); inOrder.verify(getBatchGet).execute(); // Check continuation data ContinuationData continuationData = (ContinuationData) result.getContinuationData(); assertThat(continuationData.getContainerResources()).isEmpty(); StringPaginationToken paginationToken = (StringPaginationToken) ((ContinuationData) result.getContinuationData()).getPaginationData(); assertThat(paginationToken.getToken()).isEqualTo(NEXT_PAGE_TOKEN); // Check that the right number of VCards was returned JCardReader reader = new JCardReader(result.getExportedData().getVCards()); List<VCard> vCardList = reader.readAll(); assertThat(vCardList.size()).isEqualTo(connectionsList.size()); }
((StringPaginationToken) exportInformation.get().getPaginationData()).getToken());