Sort songs directly in the SQL statement, instead of Collections.sort().
This commit is contained in:
parent
524273228d
commit
c48c2dadaf
6 changed files with 16 additions and 66 deletions
|
|
@ -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<Album> {
|
||||
@Override
|
||||
public int compare(Album lhs, Album rhs) {
|
||||
return lhs.getTitle().compareTo(rhs.getTitle());
|
||||
}
|
||||
}
|
||||
|
|
@ -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<Album> {
|
||||
@Override
|
||||
public int compare(Album lhs, Album rhs) {
|
||||
return rhs.getTitle().compareTo(lhs.getTitle());
|
||||
}
|
||||
}
|
||||
|
|
@ -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<Song> {
|
||||
@Override
|
||||
public int compare(Song lhs, Song rhs) {
|
||||
return lhs.trackNumber - rhs.trackNumber;
|
||||
}
|
||||
}
|
||||
|
|
@ -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<Album> getAllAlbums(@NonNull final Context context) {
|
||||
ArrayList<Song> 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<Song> songs = SongLoader.getSongs(SongLoader.makeSongCursor(context, AudioColumns.ALBUM_ID + "=?", new String[]{String.valueOf(albumId)}, PreferenceUtil.getInstance(context).getAlbumSongSortOrder()));
|
||||
Collections.sort(songs, new SongTrackComparator());
|
||||
ArrayList<Song> songs = SongLoader.getSongs(SongLoader.makeSongCursor(context, AudioColumns.ALBUM_ID + "=?", new String[]{String.valueOf(albumId)}, getSongLoaderSortOrder(context)));
|
||||
return new Album(songs);
|
||||
}
|
||||
|
||||
@NonNull
|
||||
public static ArrayList<Album> splitIntoAlbums(@Nullable final ArrayList<Song> songs, Comparator<Album> albumComparator) {
|
||||
public static ArrayList<Album> splitIntoAlbums(@Nullable final ArrayList<Song> songs) {
|
||||
ArrayList<Album> 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;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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<Album> 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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<Song> 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[]{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue