package com.trovebox.android.common.model; import org.json.JSONException; import org.json.JSONObject; import android.os.Parcel; import android.os.Parcelable; /** * Class representing a Album on Trovebox. * * @author Eugene Popovich */ public class Album implements Parcelable { public static final int VISIBILITY_VISIBLE = 1; public static final int VISIBILITY_INVISIBLE = 0; protected String mId; protected String mOwner; protected String mName; protected int mVisible; protected int mCount; protected Photo mCover; private Album() { } /** * Creates a Album object from json. * * @param json JSONObject of the Album as received from the Trovebox API * @return Album as represented in the given json * @throws JSONException */ public static Album fromJson(JSONObject json) throws JSONException { Album album = new Album(); album.mId = json.optString("id"); album.mOwner = json.optString("owner"); album.mName = json.optString("name"); album.mVisible = json.optInt("visible"); album.mCount = json.optInt("count"); if (!json.isNull("cover")) { album.mCover = Photo.fromJson(json.optJSONObject("cover")); } return album; } /** * Creates an Album object with just an id field assigned * * @param id * @return */ public static Album blankForId(String id) { Album album = new Album(); album.mId = id; return album; } public String getId() { return mId; } public String getOwner() { return mOwner; } public String getName() { return mName; } public int getVisible() { return mVisible; } public int getCount() { return mCount; } public Photo getCover() { return mCover; } /***************************** * PARCELABLE IMPLEMENTATION * *****************************/ @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel out, int flags) { out.writeString(mId); out.writeString(mOwner); out.writeString(mName); out.writeInt(mVisible); out.writeInt(mCount); out.writeParcelable(mCover, flags); } public static final Parcelable.Creator<Album> CREATOR = new Parcelable.Creator<Album>() { @Override public Album createFromParcel(Parcel in) { return new Album(in); } @Override public Album[] newArray(int size) { return new Album[size]; } }; private Album(Parcel in) { this(); mId = in.readString(); mOwner = in.readString(); mName = in.readString(); mVisible = in.readInt(); mCount = in.readInt(); mCover = in.readParcelable(Album.class.getClassLoader()); } }