From c48c2dadaf44b21f7526cd50635cabad5c2ada8a Mon Sep 17 00:00:00 2001 From: Karim Abou Zeid Date: Mon, 4 Jan 2016 17:53:27 +0100 Subject: [PATCH] Sort songs directly in the SQL statement, instead of Collections.sort(). --- .../comparator/AlbumASCComparator.java | 15 ------------ .../comparator/AlbumDESComparator.java | 15 ------------ .../comparator/SongTrackComparator.java | 15 ------------ .../gramophone/loader/AlbumLoader.java | 23 ++++++++----------- .../gramophone/loader/ArtistAlbumLoader.java | 8 +++---- .../gramophone/loader/ArtistSongLoader.java | 6 ++--- 6 files changed, 16 insertions(+), 66 deletions(-) delete mode 100644 app/src/main/java/com/kabouzeid/gramophone/comparator/AlbumASCComparator.java delete mode 100644 app/src/main/java/com/kabouzeid/gramophone/comparator/AlbumDESComparator.java delete mode 100644 app/src/main/java/com/kabouzeid/gramophone/comparator/SongTrackComparator.java diff --git a/app/src/main/java/com/kabouzeid/gramophone/comparator/AlbumASCComparator.java b/app/src/main/java/com/kabouzeid/gramophone/comparator/AlbumASCComparator.java deleted file mode 100644 index 16f74661..00000000 --- a/app/src/main/java/com/kabouzeid/gramophone/comparator/AlbumASCComparator.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.kabouzeid.gramophone.comparator; - -import com.kabouzeid.gramophone.model.Album; - -import java.util.Comparator; - -/** - * @author Karim Abou Zeid (kabouzeid) - */ -public class AlbumASCComparator implements Comparator { - @Override - public int compare(Album lhs, Album rhs) { - return lhs.getTitle().compareTo(rhs.getTitle()); - } -} diff --git a/app/src/main/java/com/kabouzeid/gramophone/comparator/AlbumDESComparator.java b/app/src/main/java/com/kabouzeid/gramophone/comparator/AlbumDESComparator.java deleted file mode 100644 index 57c67582..00000000 --- a/app/src/main/java/com/kabouzeid/gramophone/comparator/AlbumDESComparator.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.kabouzeid.gramophone.comparator; - -import com.kabouzeid.gramophone.model.Album; - -import java.util.Comparator; - -/** - * @author Karim Abou Zeid (kabouzeid) - */ -public class AlbumDESComparator implements Comparator { - @Override - public int compare(Album lhs, Album rhs) { - return rhs.getTitle().compareTo(lhs.getTitle()); - } -} diff --git a/app/src/main/java/com/kabouzeid/gramophone/comparator/SongTrackComparator.java b/app/src/main/java/com/kabouzeid/gramophone/comparator/SongTrackComparator.java deleted file mode 100644 index 62842d8b..00000000 --- a/app/src/main/java/com/kabouzeid/gramophone/comparator/SongTrackComparator.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.kabouzeid.gramophone.comparator; - -import com.kabouzeid.gramophone.model.Song; - -import java.util.Comparator; - -/** - * @author Karim Abou Zeid (kabouzeid) - */ -public class SongTrackComparator implements Comparator { - @Override - public int compare(Song lhs, Song rhs) { - return lhs.trackNumber - rhs.trackNumber; - } -} diff --git a/app/src/main/java/com/kabouzeid/gramophone/loader/AlbumLoader.java b/app/src/main/java/com/kabouzeid/gramophone/loader/AlbumLoader.java index 46b72579..b26f3e28 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/loader/AlbumLoader.java +++ b/app/src/main/java/com/kabouzeid/gramophone/loader/AlbumLoader.java @@ -5,30 +5,30 @@ import android.provider.MediaStore.Audio.AudioColumns; import android.support.annotation.NonNull; import android.support.annotation.Nullable; -import com.kabouzeid.gramophone.comparator.AlbumASCComparator; -import com.kabouzeid.gramophone.comparator.SongTrackComparator; import com.kabouzeid.gramophone.model.Album; import com.kabouzeid.gramophone.model.Song; import com.kabouzeid.gramophone.util.PreferenceUtil; import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; /** * @author Karim Abou Zeid (kabouzeid) */ public class AlbumLoader { + public static String getSongLoaderSortOrder(Context context) { + return PreferenceUtil.getInstance(context).getAlbumSortOrder() + ", " + PreferenceUtil.getInstance(context).getAlbumSongSortOrder(); + } + @NonNull public static ArrayList getAllAlbums(@NonNull final Context context) { ArrayList songs = SongLoader.getSongs(SongLoader.makeSongCursor( context, null, null, - PreferenceUtil.getInstance(context).getAlbumSongSortOrder()) + getSongLoaderSortOrder(context)) ); - return splitIntoAlbums(songs, new AlbumASCComparator()); + return splitIntoAlbums(songs); } @NonNull @@ -37,23 +37,21 @@ public class AlbumLoader { context, AudioColumns.ALBUM + " LIKE ?", new String[]{"%" + query + "%"}, - PreferenceUtil.getInstance(context).getAlbumSongSortOrder()) + getSongLoaderSortOrder(context)) ); - return splitIntoAlbums(songs, new AlbumASCComparator()); + return splitIntoAlbums(songs); } @NonNull public static Album getAlbum(@NonNull final Context context, int albumId) { - ArrayList songs = SongLoader.getSongs(SongLoader.makeSongCursor(context, AudioColumns.ALBUM_ID + "=?", new String[]{String.valueOf(albumId)}, PreferenceUtil.getInstance(context).getAlbumSongSortOrder())); - Collections.sort(songs, new SongTrackComparator()); + ArrayList songs = SongLoader.getSongs(SongLoader.makeSongCursor(context, AudioColumns.ALBUM_ID + "=?", new String[]{String.valueOf(albumId)}, getSongLoaderSortOrder(context))); return new Album(songs); } @NonNull - public static ArrayList splitIntoAlbums(@Nullable final ArrayList songs, Comparator albumComparator) { + public static ArrayList splitIntoAlbums(@Nullable final ArrayList songs) { ArrayList albums = new ArrayList<>(); if (songs != null) { - Collections.sort(songs, new SongTrackComparator()); for (Song song : songs) { Album album = get(albums, song.albumId); if (album == null) { @@ -63,7 +61,6 @@ public class AlbumLoader { album.songs.add(song); } } - Collections.sort(albums, albumComparator); return albums; } diff --git a/app/src/main/java/com/kabouzeid/gramophone/loader/ArtistAlbumLoader.java b/app/src/main/java/com/kabouzeid/gramophone/loader/ArtistAlbumLoader.java index 1c1a8daf..98db5c1d 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/loader/ArtistAlbumLoader.java +++ b/app/src/main/java/com/kabouzeid/gramophone/loader/ArtistAlbumLoader.java @@ -4,17 +4,15 @@ import android.content.Context; import android.provider.MediaStore; import android.support.annotation.NonNull; -import com.kabouzeid.gramophone.comparator.AlbumASCComparator; import com.kabouzeid.gramophone.model.Album; import com.kabouzeid.gramophone.model.Song; -import com.kabouzeid.gramophone.util.PreferenceUtil; import java.util.ArrayList; /** * @author Karim Abou Zeid (kabouzeid) */ -public class ArtistAlbumLoader { +public class ArtistAlbumLoader extends AlbumLoader { @NonNull public static ArrayList getAlbums(@NonNull final Context context, final int artistId) { @@ -22,8 +20,8 @@ public class ArtistAlbumLoader { context, MediaStore.Audio.AudioColumns.ARTIST_ID + "=?", new String[]{String.valueOf(artistId)}, - PreferenceUtil.getInstance(context).getAlbumSongSortOrder() + getSongLoaderSortOrder(context) )); - return AlbumLoader.splitIntoAlbums(songs, new AlbumASCComparator()); + return splitIntoAlbums(songs); } } diff --git a/app/src/main/java/com/kabouzeid/gramophone/loader/ArtistSongLoader.java b/app/src/main/java/com/kabouzeid/gramophone/loader/ArtistSongLoader.java index e2eba644..96dfc562 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/loader/ArtistSongLoader.java +++ b/app/src/main/java/com/kabouzeid/gramophone/loader/ArtistSongLoader.java @@ -13,16 +13,16 @@ import java.util.ArrayList; /** * @author Karim Abou Zeid (kabouzeid) */ -public class ArtistSongLoader { +public class ArtistSongLoader extends SongLoader { @NonNull public static ArrayList getArtistSongList(@NonNull final Context context, final int artistId) { - return SongLoader.getSongs(makeArtistSongCursor(context, artistId)); + return getSongs(makeArtistSongCursor(context, artistId)); } public static Cursor makeArtistSongCursor(@NonNull final Context context, final int artistId) { try { - return SongLoader.makeSongCursor( + return makeSongCursor( context, MediaStore.Audio.AudioColumns.ARTIST_ID + "=?", new String[]{