package com.qubling.sidekick.instance; import com.qubling.sidekick.model.Model; import com.qubling.sidekick.search.Schema; import android.os.Parcel; import android.os.Parcelable; public class Release extends Instance<Release> { private String name; private String version; private Author author; private int favoriteCount = -1; private boolean myFavorite; private long ratingCount = -1; private double ratingMean; private String license; public Release(Model<Release> model, String name) { super(model); this.name = name; } public Release(Parcel in) { name = in.readString(); version = in.readString(); author = in.readParcelable(Release.class.getClassLoader()); favoriteCount = in.readInt(); myFavorite = readParcelBoolean(in); ratingCount = in.readLong(); ratingMean = in.readDouble(); license = in.readString(); } @Override public String getKey() { return name; } public String getName() { return name; } public String getVersion() { return version; } public void setVersion(String version) { this.version = version; } public String getAuthorPauseId() { return author == null ? null : author.getPauseId(); } public void setAuthorPauseId(String pauseId) { author = getModel().getSchema().getAuthorModel().acquireInstance(pauseId); } public Author getAuthor() { return author; } public boolean hasFavoriteCount() { return favoriteCount >= 0; } public int getFavoriteCount() { return favoriteCount < 0 ? 0 : favoriteCount; } public void setFavoriteCount(int favoriteCount) { this.favoriteCount = favoriteCount; } public boolean isMyFavorite() { return myFavorite; } public void setMyFavorite(boolean myFavorite) { this.myFavorite = myFavorite; } public boolean hasRatingCount() { return ratingCount >= 0; } public long getRatingCount() { return ratingCount < 0 ? 0 : ratingCount; } public void setRatingCount(long ratingCount) { this.ratingCount = ratingCount; } public double getRatingMean() { return ratingMean; } public void setRatingMean(double ratingMean) { this.ratingMean = ratingMean; } public String getLicense() { return license; } public void setLicense(String license) { this.license = license; } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel out, int flags) { out.writeString(name); out.writeString(version); out.writeParcelable(author, flags); out.writeInt(favoriteCount); writeParcelBoolean(out, myFavorite); out.writeLong(ratingCount); out.writeDouble(ratingMean); out.writeString(license); } public static final Parcelable.Creator<Release> CREATOR = new Parcelable.Creator<Release>() { @Override public Release createFromParcel(Parcel in) { return new Release(in); } @Override public Release[] newArray(int size) { return new Release[size]; } }; @Override public void attachRelatedModels(Schema schema) { if (author != null) { author.attachToModel(schema.getAuthorModel()); } } @Override public void addToCache() { getModel().cache(this); if (author != null) author.addToCache(); } @Override public String toString() { return "Release(" + getName() + ")"; } }