package com.lateensoft.pathfinder.toolkit.model; import android.os.Parcel; import android.os.Parcelable; import com.google.common.collect.Lists; import com.google.common.primitives.Longs; import com.lateensoft.pathfinder.toolkit.dao.Identifiable; import java.util.List; /** * @author tsiemens */ public class IdNamePair implements Parcelable, Comparable<IdNamePair>, Identifiable { private long id; private String name; public IdNamePair(String name) { this(UNSET_ID, name); } public IdNamePair(long id, String name) { this.id = id; this.name = name; } public IdNamePair(IdNamePair toCopy) { this(toCopy.id, toCopy.name); } public IdNamePair(Parcel in) { id = in.readLong(); name = in.readString(); } @Override public void writeToParcel(Parcel out, int flags) { out.writeLong(id); out.writeString(name); } @Override public long getId() { return id; } @Override public void setId(long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public int describeContents() { return 0; } public static final Parcelable.Creator<IdNamePair> CREATOR = new Parcelable.Creator<IdNamePair>() { public IdNamePair createFromParcel(Parcel in) { return new IdNamePair(in); } public IdNamePair[] newArray(int size) { return new IdNamePair[size]; } }; @Override public boolean equals(Object o) { if (this == o) return true; if (!(o instanceof IdNamePair)) return false; IdNamePair that = (IdNamePair) o; if (id != that.id) return false; if (name != null ? !name.equals(that.name) : that.name != null) return false; return true; } @Override public int hashCode() { int result = (int) (id ^ (id >>> 32)); result = 31 * result + (name != null ? name.hashCode() : 0); return result; } @Override public int compareTo(IdNamePair another) { int comp = this.name.compareTo(another.name); return comp != 0 ? comp : Longs.compare(this.id, another.id); } @Override public String toString() { return Long.toString(id) + " : " + name; } public static List<String> nameList(List<IdNamePair> idNamePairs) { List<String> values = Lists.newArrayListWithCapacity(idNamePairs.size()); for (IdNamePair pair : idNamePairs) { values.add(pair.getName()); } return values; } public static String[] nameArray(List<IdNamePair> idNamePairs) { String[] values = new String[idNamePairs.size()]; for (int i = 0; i < idNamePairs.size(); i++) { values[i] = idNamePairs.get(i).getName(); } return values; } }