package com.qubling.sidekick.model; import java.util.Collection; import java.util.Collections; import com.qubling.sidekick.fetch.SubqueryFetcher; import com.qubling.sidekick.fetch.UpdateFetcher; import com.qubling.sidekick.fetch.cpan.AuthorDetailsFetcher; import com.qubling.sidekick.instance.Author; import com.qubling.sidekick.instance.Gravatar; import com.qubling.sidekick.search.ResultSet; import com.qubling.sidekick.search.Schema; public class AuthorModel extends Model<Author> { public AuthorModel(Schema schema) { super(schema); } protected Author constructInstance(String pauseId) { return new Author(this, pauseId); } public UpdateFetcher<Author> fetchDetails() { return new AuthorDetailsFetcher(this); } public UpdateFetcher<Author> fetchGravatars(float gravatarDpSize) { ResultSet.Remap<Author, Gravatar> remapper = new ResultSet.Remap<Author, Gravatar>() { @Override public Collection<Gravatar> map(Author author) { if (author.getGravatar() == null) { // Log.d("AuthorModel", "Author->Gravatar " + author.getPauseId() + "->()"); return Collections.emptyList(); } else { // Log.d("AuthorModel", "Author->Gravatar " + author.getPauseId() + "->" + author.getGravatarUrl()); return Collections.singleton(author.getGravatar()); } } }; UpdateFetcher<Gravatar> fetcher = getSchema().getGravatarModel().fetch(gravatarDpSize); return new SubqueryFetcher<Author, Gravatar>(this, fetcher, remapper); } @Override public String toString() { return getSchema() + ":AuthorModel"; } }