/**
* galaxy inc.
* meetup client for android
*/
package com.galaxy.meetup.client.android.ui.fragments;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import android.content.Context;
import android.database.Cursor;
import android.text.TextUtils;
import com.galaxy.meetup.client.android.EsCursorLoader;
import com.galaxy.meetup.client.android.EsMatrixCursor;
import com.galaxy.meetup.client.android.content.EsAccount;
import com.galaxy.meetup.client.android.content.EsPeopleData;
import com.galaxy.meetup.client.android.content.EsProvider;
import com.galaxy.meetup.client.android.content.PersonData;
/**
*
* @author sihai
*
*/
public class PeopleNotInCirclesLoader extends EsCursorLoader {
private static final String PROJECTION[] = {
"person_id", "in_my_circles"
};
private final EsAccount mAccount;
private final Map mPeopleMap;
private final String mProjection[];
public PeopleNotInCirclesLoader(Context context, EsAccount esaccount, String as[], Map hashmap, boolean flag)
{
super(context);
setUri(EsProvider.CONTACTS_URI);
mAccount = esaccount;
mProjection = as;
mPeopleMap = hashmap;
String s;
if(flag)
s = "gaia_id IS NOT NULL";
else
s = null;
setSelection(s);
}
private void buildSortedMatrixCursor(EsMatrixCursor esmatrixcursor, Map hashmap)
{
int i = esmatrixcursor.getColumnIndex("_id");
int j = esmatrixcursor.getColumnIndex("person_id");
final int nameColumnIndex = esmatrixcursor.getColumnIndex("name");
int k = esmatrixcursor.getColumnIndex("gaia_id");
ArrayList arraylist = new ArrayList();
int l = 0;
for(Iterator iterator = hashmap.entrySet().iterator(); iterator.hasNext();)
{
java.util.Map.Entry entry = (java.util.Map.Entry)iterator.next();
String s = (String)entry.getKey();
PersonData persondata = (PersonData)entry.getValue();
Object aobj[] = new Object[mProjection.length];
int i1 = l + 1;
aobj[i] = Integer.valueOf(l);
aobj[j] = s;
aobj[nameColumnIndex] = persondata.getName();
if(!TextUtils.isEmpty(persondata.getObfuscatedId()))
aobj[k] = persondata.getObfuscatedId();
arraylist.add(((Object) (aobj)));
l = i1;
}
Collections.sort(arraylist, new Comparator() {
public final int compare(Object obj, Object obj1)
{
Object aobj1[] = (Object[])obj;
Object aobj2[] = (Object[])obj1;
String s1 = (String)aobj1[nameColumnIndex];
String s2;
String s3;
if(s1 == null)
s2 = "";
else
s2 = s1;
s3 = (String)aobj2[nameColumnIndex];
if(s3 == null)
s3 = "";
return s2.compareToIgnoreCase(s3);
}
});
for(Iterator iterator1 = arraylist.iterator(); iterator1.hasNext(); esmatrixcursor.addRow((Object[])iterator1.next()));
}
private boolean removePeopleInMyCircles(Map hashmap)
{
Cursor cursor = null;
StringBuilder stringbuilder = new StringBuilder();
stringbuilder.append("person_id IN(");
for(int i = 0; i < mPeopleMap.size(); i++)
{
if(i > 0)
stringbuilder.append(',');
stringbuilder.append('?');
}
stringbuilder.append(')');
String s = stringbuilder.toString();
String as[] = (String[])mPeopleMap.keySet().toArray(new String[0]);
boolean flag = false;
try {
cursor = EsPeopleData.getPeople(getContext(), mAccount, null, null, PROJECTION, s, as);
if(null != cursor) {
while(cursor.moveToNext()) {
if(cursor.getInt(1) != 0) {
hashmap.remove(cursor.getString(0));
flag = true;
}
}
}
} finally {
if(null != cursor) {
cursor.close();
}
}
return flag;
}
public final Cursor esLoadInBackground() {
EsMatrixCursor esmatrixcursor = new EsMatrixCursor(mProjection);
if(mPeopleMap.size() != 0) {
Map hashmap = new HashMap(mPeopleMap);
if(!removePeopleInMyCircles(hashmap))
esmatrixcursor = null;
else
if(!hashmap.isEmpty())
buildSortedMatrixCursor(esmatrixcursor, hashmap);
}
return esmatrixcursor;
}
}