package com.lateensoft.pathfinder.toolkit.model.character;
import com.lateensoft.pathfinder.toolkit.dao.Identifiable;
import android.os.Parcel;
import android.os.Parcelable;
/**
* Representation for both Feats and Special abilities
* @author trevsiemens
*
*/
public class Feat implements Parcelable, Identifiable, Comparable<Feat> {
private String m_name;
private String m_description;
private long m_id;
public Feat(){
this("", "");
}
public Feat(String name, String description){
this(UNSET_ID, name, description);
}
public Feat(long id, String name, String description){
m_id = id;
m_name = name;
m_description = description;
}
public Feat(Feat otherFeat){
m_name = otherFeat.getName();
m_description = otherFeat.getDescription();
m_id = otherFeat.getId();
}
public Feat(Parcel in) {
m_name = in.readString();
m_description = in.readString();
m_id = in.readLong();
}
@Override
public void writeToParcel(Parcel out, int flags) {
out.writeString(m_name);
out.writeString(m_description);
out.writeLong(m_id);
}
public void setName(String name){
if(name != null){
m_name = name;
}
}
public String getName(){
return m_name;
}
public void setDescription(String description){
if(description != null){
m_description = description;
}
}
public String getDescription(){
return m_description;
}
@Override
public void setId(long id) {
m_id = id;
}
@Override
public long getId() {
return m_id;
}
@Override
public int describeContents() {
return 0;
}
public static final Parcelable.Creator<Feat> CREATOR = new Parcelable.Creator<Feat>() {
public Feat createFromParcel(Parcel in) {
return new Feat(in);
}
public Feat[] newArray(int size) {
return new Feat[size];
}
};
@Override
public int compareTo(Feat another) {
return this.getName().compareToIgnoreCase(another.getName());
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof Feat)) return false;
Feat feat = (Feat) o;
if (m_id != feat.m_id) return false;
if (m_description != null ? !m_description.equals(feat.m_description) : feat.m_description != null)
return false;
if (m_name != null ? !m_name.equals(feat.m_name) : feat.m_name != null) return false;
return true;
}
@Override
public int hashCode() {
int result = m_name != null ? m_name.hashCode() : 0;
result = 31 * result + (m_description != null ? m_description.hashCode() : 0);
result = 31 * result + (int) (m_id ^ (m_id >>> 32));
return result;
}
}