package org.wikipedia.search;
import android.os.Parcel;
import android.os.Parcelable;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.text.TextUtils;
import org.wikipedia.dataclient.WikiSite;
import org.wikipedia.dataclient.mwapi.MwQueryPage;
import org.wikipedia.page.PageTitle;
public class SearchResult implements Parcelable {
private PageTitle pageTitle;
private final String redirectFrom;
public SearchResult(@NonNull MwQueryPage page, @NonNull WikiSite wiki) {
this(new PageTitle(page.title(), wiki, page.thumbUrl(), page.description()));
}
public SearchResult(@NonNull PageTitle pageTitle) {
this(pageTitle, null);
}
public SearchResult(@NonNull PageTitle pageTitle, @Nullable String redirectFrom) {
this.pageTitle = pageTitle;
this.redirectFrom = redirectFrom;
}
@NonNull
public PageTitle getPageTitle() {
return pageTitle;
}
@Nullable
public String getRedirectFrom() {
return redirectFrom;
}
@Override
public String toString() {
return pageTitle.getPrefixedText();
}
@Override
public int describeContents() {
return 0;
}
public static final Parcelable.Creator<SearchResult> CREATOR
= new Parcelable.Creator<SearchResult>() {
@Override
public SearchResult createFromParcel(Parcel in) {
return new SearchResult(in);
}
@Override
public SearchResult[] newArray(int size) {
return new SearchResult[size];
}
};
@Override
public void writeToParcel(Parcel parcel, int flags) {
parcel.writeParcelable(pageTitle, flags);
parcel.writeString(redirectFrom);
}
@Override
public boolean equals(Object o) {
if (!(o instanceof SearchResult)) {
return false;
}
SearchResult other = (SearchResult)o;
return other.getPageTitle().equals(pageTitle) && TextUtils.equals(other.getRedirectFrom(), redirectFrom);
}
@Override
public int hashCode() {
int result = pageTitle.hashCode();
result = 31 * result + redirectFrom.hashCode();
return result;
}
private SearchResult(Parcel in) {
pageTitle = in.readParcelable(PageTitle.class.getClassLoader());
redirectFrom = in.readString();
}
}