package com.lateensoft.pathfinder.toolkit.model.character; import com.lateensoft.pathfinder.toolkit.dao.Identifiable; import android.os.Parcel; import android.os.Parcelable; public class Spell implements Parcelable, Identifiable, Comparable<Spell> { @SuppressWarnings("unused") private static final String TAG = Spell.class.getSimpleName(); private String m_name; private int m_prepared; private int m_level; private String m_description; private long m_id; public Spell() { this(""); } public Spell(String name) { this(name, 0); } public Spell(String name, int level) { this(UNSET_ID, name, level, 0, ""); } public Spell(String name, int level, int prepared, String description) { this(UNSET_ID, name, level, prepared, description); } public Spell(long id, String name, int level, int prepared, String description) { m_id = id; m_name = name; m_level = level; m_prepared = prepared; m_description = description; } public Spell(Spell spell) { this(spell.getId(), spell.getName(), spell.getLevel(), spell.getPrepared(), spell.getDescription()); } public Spell(Parcel in) { m_name = in.readString(); m_level = in.readInt(); m_prepared = in.readInt(); m_description = in.readString(); m_id = in.readLong(); } @Override public void writeToParcel(Parcel out, int flags) { out.writeString(m_name); out.writeInt(m_level); out.writeInt(m_prepared); out.writeString(m_description); out.writeLong(m_id); } public String getName() { return m_name; } public void setName(String name) { m_name = name; } public String getDescription() { return m_description; } public void setDescription(String description) { m_description = description; } public int getLevel() { return m_level; } public void setLevel(int level) { m_level = level; } public int getPrepared() { return m_prepared; } public boolean isPrepared() { if(m_prepared >= 1) return true; else return false; } public void setPrepared(int prepared) { m_prepared = prepared; } @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<Spell> CREATOR = new Parcelable.Creator<Spell>() { public Spell createFromParcel(Parcel in) { return new Spell(in); } public Spell[] newArray(int size) { return new Spell[size]; } }; @Override public int compareTo(Spell another) { int comparison = this.getLevel() - another.getLevel(); return (comparison != 0) ? comparison : this.getName().compareToIgnoreCase(another.getName()); } @Override public boolean equals(Object o) { if (this == o) return true; if (!(o instanceof Spell)) return false; Spell spell = (Spell) o; if (m_id != spell.m_id) return false; if (m_level != spell.m_level) return false; if (m_prepared != spell.m_prepared) return false; if (m_description != null ? !m_description.equals(spell.m_description) : spell.m_description != null) return false; if (m_name != null ? !m_name.equals(spell.m_name) : spell.m_name != null) return false; return true; } @Override public int hashCode() { int result = m_name != null ? m_name.hashCode() : 0; result = 31 * result + m_prepared; result = 31 * result + m_level; result = 31 * result + (m_description != null ? m_description.hashCode() : 0); result = 31 * result + (int) (m_id ^ (m_id >>> 32)); return result; } }