diff options
Diffstat (limited to 'main/src/cgeo/geocaching/SearchResult.java')
| -rw-r--r-- | main/src/cgeo/geocaching/SearchResult.java | 169 |
1 files changed, 169 insertions, 0 deletions
diff --git a/main/src/cgeo/geocaching/SearchResult.java b/main/src/cgeo/geocaching/SearchResult.java new file mode 100644 index 0000000..790ebd8 --- /dev/null +++ b/main/src/cgeo/geocaching/SearchResult.java @@ -0,0 +1,169 @@ +package cgeo.geocaching; + +import cgeo.geocaching.enumerations.StatusCode; + +import android.os.Parcel; +import android.os.Parcelable; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +public class SearchResult implements Parcelable { + + final private List<String> geocodes; + public StatusCode error = null; // 13 + public String url = ""; // 7 + public String[] viewstates = null; // 9 + public int totalCnt = 0; // 9 + + final public static Parcelable.Creator<SearchResult> CREATOR = new Parcelable.Creator<SearchResult>() { + public SearchResult createFromParcel(Parcel in) { + return new SearchResult(in); + } + + public SearchResult[] newArray(int size) { + return new SearchResult[size]; + } + }; + + public SearchResult() { + this((List<String>) null); + } + + public SearchResult(SearchResult searchResult) { + if (searchResult != null) { + this.geocodes = new ArrayList<String>(searchResult.geocodes); + this.error = searchResult.error; + this.url = searchResult.url; + this.viewstates = searchResult.viewstates; + this.totalCnt = searchResult.totalCnt; + } else { + this.geocodes = new ArrayList<String>(); + } + } + + public SearchResult(final List<String> geocodes) { + if (geocodes == null) { + this.geocodes = new ArrayList<String>(); + } else { + this.geocodes = new ArrayList<String>(geocodes.size()); + this.geocodes.addAll(geocodes); + } + } + + public SearchResult(final Parcel in) { + geocodes = new ArrayList<String>(); + in.readStringList(geocodes); + error = (StatusCode) in.readSerializable(); + url = in.readString(); + final int length = in.readInt(); + if (length >= 0) { + viewstates = new String[length]; + in.readStringArray(viewstates); + } + totalCnt = in.readInt(); + } + + @Override + public void writeToParcel(final Parcel out, final int flags) { + out.writeStringList(geocodes); + out.writeSerializable(error); + out.writeString(url); + if (viewstates == null) { + out.writeInt(-1); + } else { + out.writeInt(viewstates.length); + out.writeStringArray(viewstates); + } + out.writeInt(totalCnt); + } + + @Override + public int describeContents() { + return 0; + } + + public List<String> getGeocodes() { + return Collections.unmodifiableList(geocodes); + } + + public int getCount() { + return geocodes.size(); + } + + public void addGeocode(final String geocode) { + geocodes.add(geocode); + } + + public static StatusCode getError(final SearchResult search) { + if (search == null) { + return null; + } + + return search.error; + } + + public static boolean setError(final SearchResult search, final StatusCode error) { + if (search == null) { + return false; + } + + search.error = error; + + return true; + } + + public static String getUrl(final SearchResult search) { + if (search == null) { + return null; + } + + return search.url; + } + + public static boolean setUrl(final SearchResult search, String url) { + if (search == null) { + return false; + } + + search.url = url; + + return true; + } + + public static String[] getViewstates(final SearchResult search) { + if (search == null) { + return null; + } + + return search.viewstates; + } + + public static boolean setViewstates(final SearchResult search, String[] viewstates) { + if (cgBase.isEmpty(viewstates) || search == null) { + return false; + } + + search.viewstates = viewstates; + + return true; + } + + public static int getTotal(final SearchResult search) { + if (search == null) { + return 0; + } + + return search.totalCnt; + } + + public static int getCount(final SearchResult search) { + if (search == null) { + return 0; + } + + return search.getCount(); + } + +} |
