private ExportResult exportTaskList(RememberTheMilkService service) { List<TaskListModel> lists = new ArrayList<>(); List<IdOnlyContainerResource> subResources = new ArrayList<>(); List<ListInfo> listInfoList; try { listInfoList = service.getLists().lists; } catch (IOException e) { return new ExportResult(e); } for (ListInfo oldListInfo : listInfoList) { if (oldListInfo.name.equals("All Tasks")) { // All Tasks is a special list that contains everything, don't copy that over continue; } lists.add(new TaskListModel(Integer.toString(oldListInfo.id), oldListInfo.name)); subResources.add(new IdOnlyContainerResource(Integer.toString(oldListInfo.id))); } TaskContainerResource taskContainerResource = new TaskContainerResource(lists, null); ContinuationData continuationData = new ContinuationData(null); subResources.forEach(continuationData::addContainerResource); // TODO: what do we do with pagination data? return new ExportResult(ResultType.CONTINUE, taskContainerResource, continuationData); }
@SuppressWarnings("unchecked") private ExportResult<ContactsModelWrapper> doExport(TokensAndUrlAuthData authData, String url) { Request.Builder graphReqBuilder = new Request.Builder().url(url); graphReqBuilder.header("Authorization", "Bearer " + authData.getAccessToken()); try (Response graphResponse = client.newCall(graphReqBuilder.build()).execute()) { ResponseBody body = graphResponse.body(); if (body == null) { return new ExportResult<>(new Exception( "Error retrieving contacts: response body was null")); } String graphBody = new String(body.bytes()); Map graphMap = objectMapper.reader().forType(Map.class).readValue(graphBody); String nextLink = (String) graphMap.get(ODATA_NEXT); ContinuationData continuationData = nextLink == null ? null : new ContinuationData(new GraphPagination(nextLink)); List<Map<String, Object>> rawContacts = (List<Map<String, Object>>) graphMap.get("value"); if (rawContacts == null) { return new ExportResult<>(ExportResult.ResultType.END); } ContactsModelWrapper wrapper = transform(rawContacts); return new ExportResult<>(ExportResult.ResultType.CONTINUE, wrapper, continuationData); } catch (IOException e) { e.printStackTrace(); // FIXME log error return new ExportResult<>(e); } }
ContinuationData continuationData = new ContinuationData(null); for (PhotoAlbum album : photosContainerResource.getAlbums()) { continuationData.addContainerResource(new IdOnlyContainerResource(album.getId()));
nextPageData = new StringPaginationToken(ALBUM_TOKEN_PREFIX + token); ContinuationData continuationData = new ContinuationData(nextPageData);
@VisibleForTesting ExportResult<PhotosContainerResource> exportPhotos(TokensAndUrlAuthData authData, Optional<IdOnlyContainerResource> albumData, Optional<PaginationData> paginationData, UUID jobId) throws IOException { Optional<String> albumId = Optional.empty(); if (albumData.isPresent()) { albumId = Optional.of(albumData.get().getId()); } Optional<String> paginationToken = getPhotosPaginationToken(paginationData); MediaItemSearchResponse mediaItemSearchResponse = getOrCreatePhotosInterface(authData) .listMediaItems(albumId, paginationToken); PaginationData nextPageData = null; if (!Strings.isNullOrEmpty(mediaItemSearchResponse.getNextPageToken())) { nextPageData = new StringPaginationToken( PHOTO_TOKEN_PREFIX + mediaItemSearchResponse.getNextPageToken()); } ContinuationData continuationData = new ContinuationData(nextPageData); PhotosContainerResource containerResource = null; GoogleMediaItem[] mediaItems = mediaItemSearchResponse.getMediaItems(); if (mediaItems != null && mediaItems.length > 0) { List<PhotoModel> photos = convertPhotosList(albumId, mediaItems, jobId); containerResource = new PhotosContainerResource(null, photos); } ResultType resultType = ResultType.CONTINUE; if (nextPageData == null) { resultType = ResultType.END; } return new ExportResult<>(resultType, containerResource, continuationData); }
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); }
@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); }
nextPageData = new StringPaginationToken(EVENT_TOKEN_PREFIX + listResult.getNextPageToken()); ContinuationData continuationData = new ContinuationData(nextPageData);
return new ExportResult<>(resultType, photosContainerResource, new ContinuationData(newPage));
new StringPaginationToken(CALENDAR_TOKEN_PREFIX + listResult.getNextPageToken()); ContinuationData continuationData = new ContinuationData(nextPageData);
return new ExportResult<>(resultType, taskContainerResource, new ContinuationData(newPage));
lastId = status.getId(); continuationData = new ContinuationData(new StringPaginationToken(lastId));
ContinuationData continuationData = new ContinuationData(newPage); subResources.forEach(resource -> continuationData.addContainerResource(resource));
} else { PaginationData nextPageData = new StringPaginationToken(PHOTO_TOKEN_PREFIX + token); ContinuationData continuationData = new ContinuationData(nextPageData); continuationData.addContainerResource(containerResource); return new ExportResult<>(
ALBUM_TOKEN_PREFIX + albumsResponse.getPageInfo().getNextPage()); ContinuationData continuationData = new ContinuationData(paginationToken);
nextPageData = new StringPaginationToken(response.getNextPageToken()); ContinuationData continuationData = new ContinuationData(nextPageData);
moreData ? ResultType.CONTINUE : ResultType.END, new PhotosContainerResource(null, photos), moreData ? new ContinuationData(new IntPaginationToken(pageNumber + 1)) : null); } catch (TwitterException e) { return new ExportResult<>(e);
private ExportResult<PhotosContainerResource> exportAlbums( TokensAndUrlAuthData authData, Optional<StringPaginationToken> paginationData) { Optional<String> paginationToken = stripTokenPrefix(paginationData, ALBUM_TOKEN_PREFIX); ArrayList<PhotoAlbum> exportAlbums = new ArrayList<>(); // Get albums Connection<Album> connection = getOrCreatePhotosInterface(authData).getAlbums(paginationToken); PaginationData nextPageData = null; String token = connection.getAfterCursor(); if (!Strings.isNullOrEmpty(token)) { nextPageData = new StringPaginationToken(ALBUM_TOKEN_PREFIX + token); } ContinuationData continuationData = new ContinuationData(nextPageData); List<Album> albums = connection.getData(); for (Album album : albums) { exportAlbums.add(new PhotoAlbum(album.getId(), album.getName(), album.getDescription())); continuationData.addContainerResource(new IdOnlyContainerResource(album.getId())); } return new ExportResult<>( ExportResult.ResultType.CONTINUE, new PhotosContainerResource(exportAlbums, null), continuationData); }
return new ExportResult<>(resultType, mailContainerResource, new ContinuationData(newPage));
@Test public void verifySerializeDeserialize() throws Exception { ObjectMapper objectMapper = new ObjectMapper(); objectMapper.registerSubtypes( ContinuationData.class, IntPaginationToken.class, IdOnlyContainerResource.class); ContinuationData continuationData = new ContinuationData(new IntPaginationToken(100)); continuationData.addContainerResource(new IdOnlyContainerResource("123")); String serialized = objectMapper.writeValueAsString(continuationData); ContinuationData deserialized = objectMapper.readValue(serialized, ContinuationData.class); Assert.assertNotNull(deserialized); Assert.assertEquals(100, ((IntPaginationToken) deserialized.getPaginationData()).getStart()); Assert.assertEquals( "123", ((IdOnlyContainerResource) deserialized.getContainerResources().get(0)).getId()); } }