package com.boardgamegeek.tasks;
import android.content.ContentResolver;
import android.content.Context;
import android.net.Uri;
import com.boardgamegeek.R;
import com.boardgamegeek.provider.BggContract.Artists;
import com.boardgamegeek.provider.BggContract.Avatars;
import com.boardgamegeek.provider.BggContract.Buddies;
import com.boardgamegeek.provider.BggContract.Categories;
import com.boardgamegeek.provider.BggContract.CollectionViews;
import com.boardgamegeek.provider.BggContract.Designers;
import com.boardgamegeek.provider.BggContract.Games;
import com.boardgamegeek.provider.BggContract.Mechanics;
import com.boardgamegeek.provider.BggContract.Plays;
import com.boardgamegeek.provider.BggContract.Publishers;
import com.boardgamegeek.provider.BggContract.Thumbnails;
import com.boardgamegeek.service.SyncService;
import timber.log.Timber;
/**
* Deletes all data in the local database.
*/
public class ClearDatabaseTask extends ToastingAsyncTask {
private ContentResolver resolver;
public ClearDatabaseTask(Context context) {
super(context);
}
@Override
protected int getSuccessMessageResource() {
return R.string.pref_sync_clear_success;
}
@Override
protected int getFailureMessageResource() {
return R.string.pref_sync_clear_failure;
}
@Override
protected void onPreExecute() {
resolver = getContext().getContentResolver();
}
@Override
protected Boolean doInBackground(Void... params) {
boolean success = SyncService.clearCollection(getContext());
success &= SyncService.clearBuddies(getContext());
success &= SyncService.clearPlays(getContext());
int count = 0;
count += delete(Games.CONTENT_URI);
count += delete(Artists.CONTENT_URI);
count += delete(Designers.CONTENT_URI);
count += delete(Publishers.CONTENT_URI);
count += delete(Categories.CONTENT_URI);
count += delete(Mechanics.CONTENT_URI);
count += delete(Buddies.CONTENT_URI);
count += delete(Plays.CONTENT_URI);
count += delete(CollectionViews.CONTENT_URI);
Timber.i("Removed %d records", count);
count = 0;
count += resolver.delete(Thumbnails.CONTENT_URI, null, null);
count += resolver.delete(Avatars.CONTENT_URI, null, null);
Timber.i("Removed %d files", count);
return success;
}
private int delete(Uri uri) {
int count = resolver.delete(uri, null, null);
Timber.i("Removed %1$d %2$s", count, uri.getLastPathSegment());
return count;
}
}