String newAlbumId = tempData.lookupNewAlbumId(oldAlbumId); PhotoAlbum album = tempData.lookupTempAlbum(oldAlbumId); tempData.addAlbumId(oldAlbumId, photoset.getId()); tempData.removeTempPhotoAlbum(oldAlbumId); } else {
@VisibleForTesting void importSingleAlbum(UUID jobId, PhotoAlbum inputAlbum, SmugMugInterface smugMugInterface) throws IOException { SmugMugAlbumResponse response = smugMugInterface.createAlbum(inputAlbum.getName()); // Put new album ID in job store so photos can be assigned to correct album // TODO(olsona): thread safety! TempPhotosData tempPhotosData = jobStore.findData(jobId, createCacheKey(), TempPhotosData.class); if (tempPhotosData == null) { tempPhotosData = new TempPhotosData(jobId); jobStore.create(jobId, createCacheKey(), tempPhotosData); } tempPhotosData.addAlbumId(inputAlbum.getId(), response.getUri()); jobStore.update(jobId, createCacheKey(), tempPhotosData); }
private void importAlbums(Collection<PhotoAlbum> albums, TempPhotosData tempPhotosData) { for (PhotoAlbum album : albums) { tempPhotosData.addTempAlbumMapping(album.getId(), album); } }
@VisibleForTesting void importSinglePhoto(UUID jobId, PhotoModel inputPhoto, SmugMugInterface smugMugInterface) throws IOException { // Find album to upload photo to TempPhotosData tempPhotosData = jobStore.findData(jobId, createCacheKey(), TempPhotosData.class); checkState( tempPhotosData != null, "cached temp photos data for %s is null", inputPhoto.getAlbumId()); String newAlbumUri = tempPhotosData.lookupNewAlbumId(inputPhoto.getAlbumId()); checkState( !Strings.isNullOrEmpty(newAlbumUri), "Cached album URI for %s is null", inputPhoto.getAlbumId()); InputStream inputStream; if (inputPhoto.isInTempStore()) { inputStream = jobStore.getStream(jobId, inputPhoto.getFetchableUrl()); } else { inputStream = smugMugInterface.getImageAsStream(inputPhoto.getFetchableUrl()); } SmugMugImageUploadResponse response = smugMugInterface.uploadImage(inputPhoto, newAlbumUri, inputStream); }
when(mediaItemSearchResponse.getNextPageToken()).thenReturn(null); TempPhotosData tempPhotosData = new TempPhotosData(uuid); tempPhotosData.addContainedPhotoId(containedPhotoId); InputStream stream = GooglePhotosExporter.convertJsonToInputStream(tempPhotosData); when(jobStore.getStream(uuid, "tempPhotosData")).thenReturn(stream);
assertThat(tempPhotosData.lookupTempAlbum(expectedAlbumKey)).isNull(); assertThat(tempPhotosData.lookupNewAlbumId(ALBUM_ID)).isEqualTo(FLICKR_ALBUM_ID);
jobStore.findData(jobId, createCacheKey(), TempPhotosData.class); if (tempPhotosData == null) { tempPhotosData = new TempPhotosData(jobId); jobStore.create(jobId, createCacheKey(), tempPhotosData);
albumId = tempPhotosData.lookupNewAlbumId(inputPhoto.getAlbumId());
TempPhotosData tempPhotosData = new TempPhotosData(jobId); if (containedMediaSearchResponse.getMediaItems() != null) { for (GoogleMediaItem mediaItem : containedMediaSearchResponse.getMediaItems()) { tempPhotosData.addContainedPhotoId(mediaItem.getId());
@VisibleForTesting void importSingleAlbum(UUID jobId, TokensAndUrlAuthData authData, PhotoAlbum inputAlbum) throws IOException { // Set up album GoogleAlbum googleAlbum = new GoogleAlbum(); googleAlbum.setTitle(COPY_PREFIX + inputAlbum.getName()); GoogleAlbum responseAlbum = getOrCreatePhotosInterface(authData).createAlbum(googleAlbum); TempPhotosData tempPhotosData = jobStore.findData(jobId, TEMP_PHOTOS_KEY, TempPhotosData.class); if (tempPhotosData == null) { tempPhotosData = new TempPhotosData(jobId); jobStore.create(jobId, TEMP_PHOTOS_KEY, tempPhotosData); } tempPhotosData.addAlbumId(inputAlbum.getId(), responseAlbum.getId()); jobStore.update(jobId, TEMP_PHOTOS_KEY, tempPhotosData); }
@Test public void exportAlbum() throws IOException { // Set up String albumName = "Album Name"; String albumDescription = "Album description"; PhotoAlbum albumModel = new PhotoAlbum(OLD_ALBUM_ID, albumName, albumDescription); GoogleAlbum responseAlbum = new GoogleAlbum(); responseAlbum.setId(NEW_ALBUM_ID); when(googlePhotosInterface.createAlbum(Matchers.any(GoogleAlbum.class))) .thenReturn(responseAlbum); // Run test googlePhotosImporter.importSingleAlbum(uuid, null, albumModel); // Check results ArgumentCaptor<GoogleAlbum> albumArgumentCaptor = ArgumentCaptor.forClass(GoogleAlbum.class); verify(googlePhotosInterface).createAlbum(albumArgumentCaptor.capture()); assertEquals(albumArgumentCaptor.getValue().getTitle(), "Copy of " + albumName); assertNull(albumArgumentCaptor.getValue().getId()); TempPhotosData tempPhotosData = jobStore.findData(uuid, "tempPhotosData", TempPhotosData.class); assertEquals(tempPhotosData.lookupNewAlbumId(OLD_ALBUM_ID), NEW_ALBUM_ID); }
@Test public void exportPhoto() throws IOException { // Set up PhotoModel photoModel = new PhotoModel(PHOTO_TITLE, IMG_URI, PHOTO_DESCRIPTION, JPEG_MEDIA_TYPE, null, OLD_ALBUM_ID, false); TempPhotosData tempPhotosData = new TempPhotosData(uuid); tempPhotosData.addAlbumId(OLD_ALBUM_ID, NEW_ALBUM_ID); jobStore.create(uuid, "tempPhotosData", tempPhotosData); // Run test googlePhotosImporter.importSinglePhoto(uuid, null, photoModel); // Check results verify(imageStreamProvider).get(IMG_URI); verify(googlePhotosInterface).uploadPhotoContent(inputStream); ArgumentCaptor<NewMediaItemUpload> uploadArgumentCaptor = ArgumentCaptor .forClass(NewMediaItemUpload.class); verify(googlePhotosInterface).createPhoto(uploadArgumentCaptor.capture()); assertEquals(uploadArgumentCaptor.getValue().getAlbumId(), NEW_ALBUM_ID); List<NewMediaItem> newMediaItems = uploadArgumentCaptor.getValue().getNewMediaItems(); assertEquals(newMediaItems.size(), 1); NewMediaItem mediaItem = newMediaItems.get(0); assertEquals(mediaItem.getSimpleMediaItem().getUploadToken(), UPLOAD_TOKEN); assertEquals(mediaItem.getDescription(), "Copy of " + PHOTO_DESCRIPTION); } }