package org.ebookdroid.ui.library.tasks;
import org.sufficientlysecure.viewer.R;
import org.ebookdroid.common.cache.CacheManager;
import org.ebookdroid.common.settings.SettingsManager;
import org.ebookdroid.common.settings.books.BookSettings;
import org.ebookdroid.ui.library.adapters.BookNode;
import org.ebookdroid.ui.library.adapters.RecentAdapter;
import android.content.Context;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import org.emdev.ui.progress.UIFileCopying;
import org.emdev.ui.tasks.BaseFileAsyncTask;
import org.emdev.ui.tasks.BaseFileAsyncTask.FileTaskResult;
public class MoveBookTask extends BaseFileAsyncTask<BookNode, FileTaskResult> {
protected final RecentAdapter recentAdapter;
protected final File targetFolder;
protected BookNode book;
protected File origin;
public MoveBookTask(final Context context, final RecentAdapter recentAdapter, final File targetFolder) {
super(context, R.string.book_move_start, R.string.book_move_complete, R.string.book_move_error, false);
this.recentAdapter = recentAdapter;
this.targetFolder = targetFolder;
}
@Override
protected FileTaskResult doInBackground(final BookNode... params) {
book = params[0];
origin = new File(book.path);
try {
final File target = move(new File(targetFolder, origin.getName()));
if (target != null) {
CacheManager.copy(book.path, target.getAbsolutePath(), true);
}
return new FileTaskResult(target);
} catch (final IOException ex) {
return new FileTaskResult(ex);
} catch (final Throwable th) {
th.printStackTrace();
}
return null;
}
@Override
protected void processTargetFile(final File target) {
try {
if (book.settings != null) {
final BookSettings bs = SettingsManager.copyBookSettings(target, book.settings);
if (recentAdapter != null && bs.lastUpdated > 0) {
recentAdapter.replaceBook(book, bs);
}
SettingsManager.deleteBookSettings(book.settings);
}
if (origin.exists()) {
origin.delete();
}
} catch (final Throwable th) {
// TODO Auto-generated catch block
th.printStackTrace();
}
super.processTargetFile(target);
}
protected File move(final File target) throws FileNotFoundException, IOException {
if (origin.renameTo(target)) {
return target;
}
final UIFileCopying worker = new UIFileCopying(R.string.opds_loading_book, 256 * 1024, this);
worker.copy(origin, target);
return target;
}
}