package com.project.website.canvas.client.shared.searchProviders.flickr.adapters; import java.util.ArrayList; import com.ghusse.dolomite.flickr.Credentials; import com.ghusse.dolomite.flickr.Photo; import com.ghusse.dolomite.flickr.PhotoSize; import com.ghusse.dolomite.flickr.PhotoSizesResponse; import com.ghusse.dolomite.flickr.PhotoSizesResponse.PhotoSizeResponse; import com.ghusse.dolomite.flickr.photos.GetSizes; import com.google.gwt.user.client.rpc.AsyncCallback; import com.project.website.canvas.client.shared.searchProviders.ImageInfoImpl; import com.project.website.canvas.client.shared.searchProviders.flickr.FlickrSearchErrorException; import com.project.website.canvas.client.shared.searchProviders.interfaces.MediaInfo; import com.project.website.canvas.client.shared.searchProviders.interfaces.MediaResult; public class PhotoToImageResultAdapter implements MediaResult { private GetSizes photoSizesGetter = null; private Photo photo = null; public PhotoToImageResultAdapter(Credentials credentials, Photo photo) { this.photoSizesGetter = new GetSizes(credentials); this.photo = photo; } @Override public String getUrl() { return photo.getPageUrl(); } @Override public String getTitle() { return photo.getTitle(); } @Override public String getThumbnailUrl() { return this.photo.getSourceUrl(PhotoSize.THUMBNAIL); } @Override public void getMediaSizes(final AsyncCallback<ArrayList<MediaInfo>> callback) { this.photoSizesGetter.setPhoto(this.photo); this.photoSizesGetter.send(new AsyncCallback<PhotoSizesResponse>() { @Override public void onSuccess(PhotoSizesResponse result) { if (false == result.getStatus()) { callback.onFailure(new FlickrSearchErrorException(result.getMessage())); return; } callback.onSuccess(createImageInfoArray(result)); } @Override public void onFailure(Throwable caught) { callback.onFailure(caught); } }); } private ArrayList<MediaInfo> createImageInfoArray(PhotoSizesResponse sizeResult) { ArrayList<MediaInfo> imageList = new ArrayList<MediaInfo>(); for (PhotoSizeResponse sizeResponse : sizeResult.getSizes()) { imageList.add(new ImageInfoImpl(sizeResponse.getSource(), sizeResponse.getWidth(), sizeResponse.getHeight())); } return imageList; } }