package com.kabouzeid.gramophone.model;
import android.os.Parcel;
import android.os.Parcelable;
import android.support.annotation.NonNull;
import java.util.ArrayList;
/**
* @author Karim Abou Zeid (kabouzeid)
*/
public class Album implements Parcelable {
public final ArrayList<Song> songs;
public Album(ArrayList<Song> songs) {
this.songs = songs;
}
public Album() {
this.songs = new ArrayList<>();
}
public int getId() {
return safeGetFirstSong().albumId;
}
public String getTitle() {
return safeGetFirstSong().albumName;
}
public int getArtistId() {
return safeGetFirstSong().artistId;
}
public String getArtistName() {
return safeGetFirstSong().artistName;
}
public int getYear() {
return safeGetFirstSong().year;
}
public long getDateModified() {
return safeGetFirstSong().dateModified;
}
public int getSongCount() {
return songs.size();
}
@NonNull
public Song safeGetFirstSong() {
return songs.isEmpty() ? Song.EMPTY_SONG : songs.get(0);
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Album that = (Album) o;
return songs != null ? songs.equals(that.songs) : that.songs == null;
}
@Override
public int hashCode() {
return songs != null ? songs.hashCode() : 0;
}
@Override
public String toString() {
return "Album{" +
"songs=" + songs +
'}';
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeTypedList(songs);
}
protected Album(Parcel in) {
this.songs = in.createTypedArrayList(Song.CREATOR);
}
public static final Creator<Album> CREATOR = new Creator<Album>() {
public Album createFromParcel(Parcel source) {
return new Album(source);
}
public Album[] newArray(int size) {
return new Album[size];
}
};
}