/**
* galaxy inc.
* meetup client for android
*/
package com.galaxy.meetup.client.android.ui.fragments;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import android.database.Cursor;
import android.os.Parcel;
import android.os.Parcelable;
import android.text.TextUtils;
import com.galaxy.meetup.client.android.EsMatrixCursor;
/**
*
* @author sihai
*
*/
public class PeopleSearchResults implements Parcelable {
public static final android.os.Parcelable.Creator CREATOR = new android.os.Parcelable.Creator() {
public final Object createFromParcel(Parcel parcel) {
return new PeopleSearchResults(parcel);
}
public final Object[] newArray(int i) {
return new PeopleSearchResults[i];
}
};
private static final String PROJECTION[] = { "_id", "person_id",
"lookup_key", "gaia_id", "name", "profile_type", "avatar",
"packed_circle_ids", "matched_email", "email", "phone",
"phone_type", "snippet" };
private final List mContacts;
private EsMatrixCursor mCursor;
private boolean mCursorValid;
private final Map mGaiaIdsAndCircles;
private boolean mGaiaIdsAndCirclesLoaded;
private boolean mHasMoreResults;
private boolean mIncludePeopleInCircles;
private final List mLocalProfiles;
private boolean mLocalProfilesLoaded;
private String mMyPersonId;
private long mNextId;
private final List mPublicProfiles;
private String mQuery;
private String mToken;
public PeopleSearchResults() {
mGaiaIdsAndCircles = new HashMap();
mGaiaIdsAndCirclesLoaded = false;
mContacts = new ArrayList();
mLocalProfiles = new ArrayList();
mLocalProfilesLoaded = false;
mPublicProfiles = new ArrayList();
mIncludePeopleInCircles = true;
}
public PeopleSearchResults(Parcel parcel) {
super();
boolean flag = true;
mGaiaIdsAndCircles = new HashMap();
mGaiaIdsAndCirclesLoaded = false;
mContacts = new ArrayList();
mLocalProfiles = new ArrayList();
mLocalProfilesLoaded = false;
mPublicProfiles = new ArrayList();
mIncludePeopleInCircles = flag;
mMyPersonId = parcel.readString();
mQuery = parcel.readString();
mToken = parcel.readString();
boolean flag1;
int i;
if (parcel.readInt() != 0)
flag1 = flag;
else
flag1 = false;
mHasMoreResults = flag1;
if (parcel.readInt() == 0)
flag = false;
mIncludePeopleInCircles = flag;
i = parcel.readInt();
for (int j = 0; j < i; j++) {
String s = parcel.readString();
String s1 = parcel.readString();
String s2 = parcel.readString();
int k = parcel.readInt();
String s3 = parcel.readString();
String s4 = parcel.readString();
mPublicProfiles.add(new PublicProfile(s, s1, s2, k, s3, s4));
}
}
public static void onFinishContacts() {
}
public final void addContact(String s, String s1, String s2, String s3,
String s4, String s5) {
mContacts.add(new Contact(s, s1, s2, s3, s4, s5));
}
public final void addGaiaIdAndCircles(String s, String s1) {
mGaiaIdsAndCircles.put(s, s1);
}
public final void addLocalProfile(String s, String s1, String s2, int i,
String s3, String s4, String s5, String s6, String s7) {
if (!s.equals(mMyPersonId))
mLocalProfiles.add(new LocalProfile(s, s1, s2, i, s3, s4, s5, null,
null));
}
public final void addPublicProfile(String s, String s1, String s2, int i,
String s3, String s4) {
if (!s.equals(mMyPersonId)) {
mPublicProfiles.add(new PublicProfile(s, s1, s2, i, s3, s4));
mCursorValid = false;
}
}
public int describeContents() {
return 0;
}
public final int getCount() {
return getCursor().getCount();
}
public final Cursor getCursor() {
EsMatrixCursor esmatrixcursor;
if (mCursorValid) {
esmatrixcursor = mCursor;
} else {
mCursor = new EsMatrixCursor(PROJECTION);
mCursorValid = true;
if (!mLocalProfilesLoaded || !mGaiaIdsAndCirclesLoaded) {
esmatrixcursor = mCursor;
} else {
HashSet hashset = new HashSet();
HashSet hashset1 = new HashSet();
HashSet hashset2 = new HashSet();
if (mIncludePeopleInCircles) {
Iterator iterator2 = mLocalProfiles.iterator();
do {
if (!iterator2.hasNext())
break;
LocalProfile localprofile = (LocalProfile) iterator2
.next();
String s5 = localprofile.gaiaId;
String s6 = localprofile.email;
EsMatrixCursor esmatrixcursor3 = mCursor;
Object aobj4[] = new Object[13];
long l3 = mNextId;
mNextId = 1L + l3;
aobj4[0] = Long.valueOf(l3);
aobj4[1] = localprofile.personId;
aobj4[2] = null;
aobj4[3] = s5;
aobj4[4] = localprofile.name;
aobj4[5] = Integer.valueOf(localprofile.profileType);
aobj4[6] = localprofile.avatarUrl;
aobj4[7] = localprofile.packedCircleIds;
aobj4[8] = s6;
aobj4[9] = null;
aobj4[10] = localprofile.phoneNumber;
aobj4[11] = localprofile.phoneType;
aobj4[12] = null;
esmatrixcursor3.addRow(aobj4);
hashset.add(s5);
hashset1.add(localprofile.name);
if (s6 != null)
hashset2.add(s6);
} while (true);
Iterator iterator3 = mPublicProfiles.iterator();
do {
if (!iterator3.hasNext())
break;
PublicProfile publicprofile1 = (PublicProfile) iterator3
.next();
String s3 = publicprofile1.gaiaId;
if (!hashset.contains(s3)) {
String s4 = (String) mGaiaIdsAndCircles.get(s3);
if (!TextUtils.isEmpty(s4)) {
EsMatrixCursor esmatrixcursor2 = mCursor;
Object aobj3[] = new Object[13];
long l2 = mNextId;
mNextId = 1L + l2;
aobj3[0] = Long.valueOf(l2);
aobj3[1] = publicprofile1.personId;
aobj3[2] = null;
aobj3[3] = s3;
aobj3[4] = publicprofile1.name;
aobj3[5] = Integer
.valueOf(publicprofile1.profileType);
aobj3[6] = publicprofile1.avatarUrl;
aobj3[7] = s4;
aobj3[8] = null;
aobj3[9] = null;
aobj3[10] = null;
aobj3[11] = null;
aobj3[12] = publicprofile1.snippet;
esmatrixcursor2.addRow(aobj3);
hashset.add(s3);
hashset1.add(publicprofile1.name);
}
}
} while (true);
}
if (!mContacts.isEmpty()) {
HashMap hashmap = new HashMap();
Iterator iterator = mContacts.iterator();
do {
if (!iterator.hasNext())
break;
Contact contact = (Contact) iterator.next();
if (!hashset1.contains(contact.name)) {
String s1 = contact.email;
if (!hashset2.contains(s1)) {
Object aobj1[] = (Object[]) hashmap.get(s1);
if (aobj1 != null) {
String s2 = (String) aobj1[4];
if ((TextUtils.isEmpty(s2) || s2
.equalsIgnoreCase(s1))
&& !TextUtils.isEmpty(contact.name)) {
aobj1[1] = contact.personId;
aobj1[2] = contact.lookupKey;
aobj1[4] = contact.name;
if (aobj1[10] == null)
aobj1[10] = contact.phoneNumber;
if (aobj1[11] == null)
aobj1[11] = contact.phoneType;
}
} else {
Object aobj2[] = new Object[13];
long l1 = mNextId;
mNextId = 1L + l1;
aobj2[0] = Long.valueOf(l1);
aobj2[1] = contact.personId;
aobj2[2] = contact.lookupKey;
aobj2[3] = null;
aobj2[4] = contact.name;
aobj2[5] = Integer.valueOf(1);
aobj2[6] = null;
aobj2[7] = null;
aobj2[8] = null;
aobj2[9] = contact.email;
aobj2[10] = contact.phoneNumber;
aobj2[11] = contact.phoneType;
aobj2[12] = null;
hashmap.put(s1, ((Object) (aobj2)));
mCursor.addRow(aobj2);
}
}
}
} while (true);
}
Iterator iterator1 = mPublicProfiles.iterator();
do {
if (!iterator1.hasNext())
break;
PublicProfile publicprofile = (PublicProfile) iterator1
.next();
String s = publicprofile.gaiaId;
if (!hashset.contains(s)
&& !mGaiaIdsAndCircles.containsKey(s)) {
EsMatrixCursor esmatrixcursor1 = mCursor;
Object aobj[] = new Object[13];
long l = mNextId;
mNextId = 1L + l;
aobj[0] = Long.valueOf(l);
aobj[1] = publicprofile.personId;
aobj[2] = null;
aobj[3] = s;
aobj[4] = publicprofile.name;
aobj[5] = Integer.valueOf(publicprofile.profileType);
aobj[6] = publicprofile.avatarUrl;
aobj[7] = null;
aobj[8] = null;
aobj[9] = null;
aobj[10] = null;
aobj[11] = null;
aobj[12] = publicprofile.snippet;
esmatrixcursor1.addRow(aobj);
}
} while (true);
esmatrixcursor = mCursor;
}
}
return esmatrixcursor;
}
public final int getPublicProfileCount() {
return mPublicProfiles.size();
}
public final String getQuery() {
return mQuery;
}
public final String getToken() {
return mToken;
}
public final boolean hasMoreResults() {
return mHasMoreResults;
}
public final boolean isParcelable() {
boolean flag;
if (mLocalProfiles.size() + mPublicProfiles.size() <= 1000)
flag = true;
else
flag = false;
return flag;
}
public final void onFinishGaiaIdsAndCircles() {
mGaiaIdsAndCirclesLoaded = true;
}
public final void onFinishLocalProfiles() {
mLocalProfilesLoaded = true;
}
public final void onStartContacts() {
mContacts.clear();
mCursorValid = false;
}
public final void onStartGaiaIdsAndCircles() {
mGaiaIdsAndCircles.clear();
mCursorValid = false;
}
public final void onStartLocalProfiles() {
mLocalProfiles.clear();
mLocalProfilesLoaded = false;
mCursorValid = false;
}
public final void setHasMoreResults(boolean flag) {
mHasMoreResults = flag;
}
public final void setIncludePeopleInCircles(boolean flag) {
mIncludePeopleInCircles = flag;
}
public final void setMyProfile(String s) {
mMyPersonId = s;
}
public final void setQueryString(String s) {
if (!TextUtils.equals(mQuery, s)) {
mQuery = s;
mLocalProfiles.clear();
mPublicProfiles.clear();
mLocalProfilesLoaded = false;
mCursorValid = false;
mToken = null;
}
}
public final void setToken(String s) {
mToken = s;
}
public void writeToParcel(Parcel parcel, int i) {
int j = 1;
parcel.writeString(mMyPersonId);
parcel.writeString(mQuery);
parcel.writeString(mToken);
int k;
int l;
if (mHasMoreResults)
k = j;
else
k = 0;
parcel.writeInt(k);
if (!mIncludePeopleInCircles)
j = 0;
parcel.writeInt(j);
l = mPublicProfiles.size();
parcel.writeInt(l);
for (int i1 = 0; i1 < l; i1++) {
PublicProfile publicprofile = (PublicProfile) mPublicProfiles
.get(i1);
parcel.writeString(publicprofile.personId);
parcel.writeString(publicprofile.gaiaId);
parcel.writeString(publicprofile.name);
parcel.writeInt(publicprofile.profileType);
parcel.writeString(publicprofile.avatarUrl);
parcel.writeString(publicprofile.snippet);
}
}
private static final class Contact extends Profile {
String email;
String lookupKey;
String phoneNumber;
String phoneType;
Contact(String s, String s1, String s2, String s3, String s4, String s5) {
super(s, null, s2, 1, null);
lookupKey = s1;
email = s3;
phoneNumber = s4;
phoneType = s5;
}
}
private static final class LocalProfile extends Profile {
String email;
String packedCircleIds;
String phoneNumber;
String phoneType;
LocalProfile(String s, String s1, String s2, int i, String s3,
String s4, String s5, String s6, String s7) {
super(s, s1, s2, i, s3);
packedCircleIds = s4;
email = s5;
phoneNumber = s6;
phoneType = s7;
}
}
private static abstract class Profile {
String avatarUrl;
String gaiaId;
String name;
String personId;
int profileType;
Profile(String s, String s1, String s2, int i, String s3) {
personId = s;
gaiaId = s1;
name = s2;
profileType = i;
avatarUrl = s3;
}
}
private static final class PublicProfile extends Profile {
String snippet;
PublicProfile(String s, String s1, String s2, int i, String s3,
String s4) {
super(s, s1, s2, i, s3);
snippet = s4;
}
}
}