package ca.josephroque.bowlingcompanion.wrapper;
import android.os.Parcel;
import android.os.Parcelable;
/**
* Created by Joseph Roque on 2015-07-22. Organizes the data for a bowler.
*/
public class Bowler
implements Parcelable, NameAverageId {
/** Name of the bowler. */
private final String mBowlerName;
/** Unique id of the bowler. */
private long mBowlerId;
/** Average of the bowler. */
private final float mBowlerAverage;
/** Indicates if this bowler has been deleted. */
private boolean mIsDeleted;
/**
* Assigns the member variables to the parameters provided.
*
* @param id unique id of the bowler
* @param name name of the bowler
* @param average average of the bowler
*/
public Bowler(long id, String name, float average) {
this.mBowlerId = id;
this.mBowlerName = name;
this.mBowlerAverage = average;
}
/**
* Recreates a bowler object from a {@link android.os.Parcel}.
*
* @param pc bowler data
*/
public Bowler(Parcel pc) {
mBowlerId = pc.readLong();
mBowlerName = pc.readString();
mBowlerAverage = pc.readFloat();
}
/**
* Gets the bowler's name.
*
* @return the value of {@code mBowlerName}
*/
public String getBowlerName() {
return mBowlerName;
}
/**
* Sets a new value for {@code mBowlerId}.
*
* @param bowlerId the new id
*/
public void setBowlerId(long bowlerId) {
this.mBowlerId = bowlerId;
}
/**
* Gets the bowler's id.
*
* @return the value of {@code mBowlerId}
*/
public long getBowlerId() {
return mBowlerId;
}
/**
* Gets the bowler's average.
*
* @return the value of {@code mBowlerAverage}
*/
public float getBowlerAverage() {
return mBowlerAverage;
}
@Override
public String getName() {
return getBowlerName();
}
@Override
public float getAverage() {
return getBowlerAverage();
}
@Override
public long getId() {
return getBowlerId();
}
@Override
public void writeToParcel(Parcel pc, int flags) {
pc.writeLong(mBowlerId);
pc.writeString(mBowlerName);
pc.writeFloat(mBowlerAverage);
}
@Override
public int describeContents() {
return 0;
}
/**
* Used to create objects and arrays from this class.
*/
public static final Parcelable.Creator<Bowler> CREATOR = new Parcelable.Creator<Bowler>() {
@Override
public Bowler createFromParcel(Parcel pc) {
return new Bowler(pc);
}
@Override
public Bowler[] newArray(int size) {
return new Bowler[size];
}
};
@Override
public boolean equals(Object other) {
if (other == null || !(other instanceof Bowler))
return false;
if (other == this)
return true;
Bowler bowler = (Bowler) other;
return getBowlerName().equals(bowler.getBowlerName());
}
@SuppressWarnings("CheckStyle")
@Override
public int hashCode() {
int result = 89;
int c = getBowlerName().hashCode();
return 37 * result + c;
}
@Override
public void setIsDeleted(boolean deleted) {
this.mIsDeleted = deleted;
}
@Override
public boolean wasDeleted() {
return mIsDeleted;
}
}