package com.vaguehope.onosendai.payload; import java.util.ArrayList; import java.util.List; import android.content.Context; import com.vaguehope.onosendai.model.MetaType; import com.vaguehope.onosendai.model.Tweet; import com.vaguehope.onosendai.storage.DbInterface; import com.vaguehope.onosendai.util.DialogHelper; import com.vaguehope.onosendai.util.Result; import com.vaguehope.onosendai.util.exec.ExecutorEventListener; import com.vaguehope.onosendai.util.exec.TrackingAsyncTask; public class ReplyLoaderTask extends TrackingAsyncTask<Void, Void, Result<List<Payload>>> { private final Context context; private final DbInterface db; private final Tweet tweet; private final PayloadListAdapter payloadListAdaptor; public ReplyLoaderTask (final ExecutorEventListener eventListener, final Context context, final DbInterface db, final Tweet tweet, final PayloadListAdapter payloadListAdaptor) { super(eventListener); this.context = context; this.db = db; this.payloadListAdaptor = payloadListAdaptor; this.tweet = tweet; } @Override public String toString () { return "replyLoader:" + this.tweet.getSid(); } @Override protected Result<List<Payload>> doInBackgroundWithTracking (final Void... unused) { try { final List<Tweet> replies = this.db.findTweetsWithMeta(MetaType.INREPLYTO, this.tweet.getSid(), 20); final List<Payload> replyPayloads = new ArrayList<Payload>(); for (Tweet reply : replies) { replyPayloads.add(new InReplyToPayload(this.tweet, reply)); } return new Result<List<Payload>>(replyPayloads); } catch (Exception e) { // NOSONAR want to report errors to UI. return new Result<List<Payload>>(e); } } @Override protected void onPostExecute (final Result<List<Payload>> result) { if (result.isSuccess()) { if (this.payloadListAdaptor.isForTweet(this.tweet)) { this.payloadListAdaptor.addItemsTop(result.getData()); } } else { DialogHelper.alert(this.context, result.getE()); } } }