package co.smartreceipts.android.sync.model.impl;
import android.os.Parcel;
import android.os.Parcelable;
import android.support.annotation.NonNull;
import com.google.common.base.Preconditions;
import com.google.gson.annotations.SerializedName;
import java.io.Serializable;
/**
* An implementation of the interface for unique ids for sync data.
*/
public class Identifier implements Parcelable, Serializable, CharSequence {
@SerializedName("id")
private final String mId;
public Identifier(@NonNull String id) {
mId = Preconditions.checkNotNull(id);
}
private Identifier(Parcel in) {
mId = in.readString();
}
/**
* @return - the {@link String} representation of this id
*/
@NonNull
public String getId() {
return mId;
}
@Override
public int length() {
return mId.length();
}
@Override
public char charAt(int i) {
return mId.charAt(i);
}
@Override
public CharSequence subSequence(int start, int end) {
return mId.subSequence(start, end);
}
@Override
@NonNull
public String toString() {
return mId;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(this.mId);
}
public static final Creator<Identifier> CREATOR = new Creator<Identifier>() {
public Identifier createFromParcel(Parcel source) {
return new Identifier(source);
}
public Identifier[] newArray(int size) {
return new Identifier[size];
}
};
@Override
public int hashCode() {
return mId.hashCode();
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Identifier identifier = (Identifier) o;
return mId.equals(identifier.mId);
}
}