/** * galaxy inc. * meetup client for android */ package com.galaxy.meetup.client.android.api; import android.location.Location; import android.os.Parcel; import android.os.Parcelable; /** * * @author sihai * */ public class LocationQuery implements Parcelable { private final String mKey; private final Location mLocation; private final String mQuery; public static final android.os.Parcelable.Creator CREATOR = new android.os.Parcelable.Creator() { public final Object createFromParcel(Parcel parcel) { return new LocationQuery(parcel); } public final Object[] newArray(int i) { return new LocationQuery[i]; } }; public LocationQuery(Location location, String query) { if(location == null) { throw new NullPointerException("Location is null"); } else { mLocation = location; mQuery = query; mKey = buildKey(); return; } } LocationQuery(Parcel parcel) { mLocation = (Location)parcel.readParcelable(LocationQuery.class.getClassLoader()); mQuery = parcel.readString(); mKey = buildKey(); } private String buildKey() { StringBuilder stringbuilder = new StringBuilder(); stringbuilder.append(mLocation.getLatitude()).append('|'); stringbuilder.append(mLocation.getLongitude()).append('|'); stringbuilder.append(mLocation.getAccuracy()).append('|'); if(hasQueryString()) stringbuilder.append(mQuery); return stringbuilder.toString(); } public int describeContents() { return 0; } public boolean equals(Object obj) { if(null == obj) { return false; } if(!(obj instanceof LocationQuery)) { return false; } return mKey.equals(((LocationQuery)obj).mKey); } public final String getKey() { return mKey; } public final Location getLocation() { return mLocation; } public final String getQueryString() { return mQuery; } public final boolean hasQueryString() { boolean flag; if(mQuery != null && mQuery.length() > 0) flag = true; else flag = false; return flag; } public int hashCode() { return mKey.hashCode(); } public void writeToParcel(Parcel parcel, int i) { parcel.writeParcelable(mLocation, i); parcel.writeString(mQuery); } }