optimize multiple track deletion

After #480 got implemented, we can now delete multiple tracks in one go and only cause DB vacuum once.
This commit is contained in:
Peter Storch
2020-10-31 23:09:46 +01:00
committed by Dennis Guse
parent e4270b983a
commit 43e0f33776
3 changed files with 14 additions and 10 deletions
@@ -33,6 +33,7 @@ import androidx.loader.content.Loader;
import java.io.File;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.UUID;
@@ -179,6 +180,17 @@ public class ContentProviderUtils {
FileUtils.deleteDirectoryRecurse(dir);
}
public void deleteTracks(Context context, @NonNull List<Track.Id> trackIds) {
// Delete track folder resources.
for (Track.Id trackId : trackIds) {
FileUtils.deleteDirectoryRecurse(FileUtils.getPhotoDir(context, trackId));
}
// Delete track last since it triggers a database vacuum call
String whereClause = String.format(TracksColumns._ID + " IN (%s)", TextUtils.join(",", Collections.nCopies(trackIds.size(), "?")));
contentResolver.delete(TracksColumns.CONTENT_URI, whereClause, trackIds.stream().map(id->Long.toString(id.getId())).toArray(String[]::new));
}
public void deleteTrack(Context context, @NonNull Track.Id trackId) {
// Delete track folder resources.
FileUtils.deleteDirectoryRecurse(FileUtils.getPhotoDir(context, trackId));