package org.ebookdroid.ui.opds.adapters;
import org.ebookdroid.opds.model.Book;
import org.ebookdroid.opds.model.BookDownloadLink;
import org.ebookdroid.opds.model.Feed;
import org.emdev.ui.tasks.AsyncTaskExecutor;
public class OPDSTaskExecutor {
private static final int CORE_POOL_SIZE = 1;
private static final int MAXIMUM_POOL_SIZE = 10;
private static final int KEEP_ALIVE = 1;
private static final AsyncTaskExecutor executor = new AsyncTaskExecutor(1024, CORE_POOL_SIZE,
MAXIMUM_POOL_SIZE, KEEP_ALIVE, "OPDSThread");
private final OPDSAdapter adapter;
private volatile LoadThumbnailTask background;
OPDSTaskExecutor(final OPDSAdapter adapter) {
this.adapter = adapter;
}
public void startLoadFeed(final Feed feed) {
if (feed != null) {
if (feed.loadedAt == 0) {
executor.execute(new LoadFeedTask(adapter), feed);
} else {
startLoadThumbnails(feed);
}
}
}
public void startBookDownload(final Book book, final BookDownloadLink link) {
stopLoadThumbnails();
executor.execute(new DownloadBookTask(adapter), book, link);
}
public void startLoadThumbnails(final Feed feed) {
if (background != null) {
background.stop();
}
background = new LoadThumbnailTask(adapter);
executor.execute(background, feed);
}
public void stopLoadThumbnails() {
if (background != null) {
background.cancel(true);
background = null;
}
}
}