/**
* 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.Iterator;
import java.util.List;
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.EsEventData;
import com.galaxy.meetup.client.android.content.EsPeopleData;
import com.galaxy.meetup.client.android.content.EsProvider;
import com.galaxy.meetup.client.util.PrimitiveUtils;
import com.galaxy.meetup.server.client.domain.EmbedsPerson;
import com.galaxy.meetup.server.client.domain.Invitee;
import com.galaxy.meetup.server.client.domain.InviteeSummary;
import com.galaxy.meetup.server.client.domain.PlusEvent;
import com.galaxy.meetup.server.client.util.JsonUtil;
/**
*
* @author sihai
*
*/
public class EventInviteeListLoader extends EsCursorLoader {
private static final String INVITEE_PROJECTION[] = {
"is_header", "_id", "person_id", "gaia_id", "name", "email", "packed_circle_ids", "numaddguests", "blacklisted", "rsvp",
"is_past", "invitee_count"
};
private final EsAccount mAccount;
private final String mEventId;
private final String mOwnerId;
private static interface InviteeQuery
{
public static final String PROJECTION[] = {
"event_data", "invitee_roster"
};
}
public EventInviteeListLoader(Context context, EsAccount esaccount, String s, String s1)
{
super(context, EsProvider.EVENTS_ALL_URI);
mEventId = s;
mOwnerId = s1;
mAccount = esaccount;
}
private void insertInviteeGroup(PlusEvent plusevent, String s, List list, EsMatrixCursor esmatrixcursor, HashMap hashmap)
{
InviteeSummary inviteesummary = EsEventData.getInviteeSummary(plusevent, s);
int i = 0;
for(int j = 0; j < list.size(); j++)
{
Invitee invitee1 = (Invitee)list.get(j);
if(isPersonVisible(invitee1.invitee))
i += 1 + PrimitiveUtils.safeInt(invitee1.numAdditionalGuests);
}
int i1;
if(inviteesummary != null)
{
i1 = inviteesummary.count.intValue();
} else
{
int k = 0;
for(int l = 0; l < list.size(); l++)
k += 1 + PrimitiveUtils.safeInt(((Invitee)list.get(l)).numAdditionalGuests);
i1 = k;
}
if(i1 > 0)
{
boolean flag = EsEventData.isEventOver(plusevent, System.currentTimeMillis());
Object aobj[] = new Object[INVITEE_PROJECTION.length];
aobj[0] = Integer.valueOf(0);
aobj[1] = Integer.valueOf(esmatrixcursor.getCount());
aobj[9] = s;
aobj[11] = Integer.valueOf(i1);
int j1;
if(flag)
j1 = 1;
else
j1 = 0;
aobj[10] = Integer.valueOf(j1);
esmatrixcursor.addRow(aobj);
if(list != null)
{
Iterator iterator = list.iterator();
do
{
if(!iterator.hasNext())
break;
Invitee invitee = (Invitee)iterator.next();
if(invitee.invitee != null && isPersonVisible(invitee.invitee))
{
String s1 = invitee.invitee.ownerObfuscatedId;
boolean flag1;
Object aobj2[];
String s2;
int l1;
int i2;
if(invitee.isAdminBlacklisted != null && invitee.isAdminBlacklisted.booleanValue())
flag1 = true;
else
flag1 = false;
aobj2 = new Object[INVITEE_PROJECTION.length];
aobj2[0] = Integer.valueOf(1);
aobj2[1] = Integer.valueOf(esmatrixcursor.getCount());
if(s1 != null)
s2 = (new StringBuilder("g:")).append(s1).toString();
else
s2 = null;
aobj2[2] = s2;
aobj2[3] = s1;
aobj2[4] = invitee.invitee.name;
aobj2[5] = invitee.invitee.email;
if(TextUtils.equals(invitee.rsvpType, "ATTENDING"))
l1 = PrimitiveUtils.safeInt(invitee.numAdditionalGuests);
else
l1 = 0;
aobj2[7] = Integer.valueOf(l1);
aobj2[6] = hashmap.get(s1);
if(flag1)
i2 = 1;
else
i2 = 0;
aobj2[8] = Integer.valueOf(i2);
esmatrixcursor.addRow(aobj2);
}
} while(true);
}
int k1 = i1 - i;
if(k1 > 0)
{
Object aobj1[] = new Object[INVITEE_PROJECTION.length];
aobj1[0] = Integer.valueOf(2);
aobj1[1] = Integer.valueOf(esmatrixcursor.getCount());
aobj1[11] = Integer.valueOf(k1);
esmatrixcursor.addRow(aobj1);
}
}
}
private static boolean isPersonVisible(EmbedsPerson embedsperson)
{
boolean flag;
if(embedsperson != null && (!TextUtils.isEmpty(embedsperson.email) || !TextUtils.isEmpty(embedsperson.name)))
flag = true;
else
flag = false;
return flag;
}
private HashMap queryCirclesForPeople(List list)
{
HashMap hashmap;
Cursor cursor = null;
hashmap = new HashMap();
Iterator iterator = list.iterator();
do
{
if(!iterator.hasNext())
break;
Invitee invitee = (Invitee)iterator.next();
if(invitee.invitee != null && invitee.invitee.ownerObfuscatedId != null)
hashmap.put(invitee.invitee.ownerObfuscatedId, null);
} while(true);
StringBuilder stringbuilder = new StringBuilder();
stringbuilder.append("gaia_id IN(");
for(int i = 0; i < hashmap.size(); i++)
{
if(i > 0)
stringbuilder.append(',');
stringbuilder.append('?');
}
stringbuilder.append(')');
String s = stringbuilder.toString();
String as[] = (String[])hashmap.keySet().toArray(new String[0]);
try {
cursor = EsPeopleData.getPeople(getContext(), mAccount, null, null, CircleQuery.PROJECTION, s, as);
if(null != cursor) {
for(; cursor.moveToNext(); hashmap.put(cursor.getString(0), cursor.getString(1)));
}
return hashmap;
} finally {
if(null != cursor) {
cursor.close();
}
}
}
public final Cursor esLoadInBackground()
{
if(null == mEventId || null == mOwnerId) {
return null;
}
PlusEvent plusevent = null;
EsEventData.InviteeList inviteelist = null;
Cursor cursor = null;
try {
cursor = EsEventData.getEvent(getContext(), mAccount, mEventId, InviteeQuery.PROJECTION);
if(cursor.moveToFirst()) {
plusevent = (PlusEvent)JsonUtil.fromByteArray(cursor.getBlob(0), PlusEvent.class);
byte abyte0[] = cursor.getBlob(1);
inviteelist = null;
if(abyte0 != null)
inviteelist = (EsEventData.InviteeList)JsonUtil.fromByteArray(abyte0, EsEventData.InviteeList.class);
}
} finally {
if(null != cursor) {
cursor.close();
}
}
if(inviteelist == null)
{
return null;
} else
{
ArrayList arraylist = new ArrayList();
ArrayList arraylist1 = new ArrayList();
ArrayList arraylist2 = new ArrayList();
ArrayList arraylist3 = new ArrayList();
ArrayList arraylist4 = new ArrayList();
for(Iterator iterator = inviteelist.invitees.iterator(); iterator.hasNext();)
{
Invitee invitee = (Invitee)iterator.next();
if(invitee.isAdminBlacklisted != null && invitee.isAdminBlacklisted.booleanValue())
{
arraylist4.add(invitee);
} else
{
String s = invitee.rsvpType;
if("ATTENDING".equals(s) || "CHECKIN".equals(s))
arraylist.add(invitee);
else
if("NOT_ATTENDING".equals(s))
arraylist2.add(invitee);
else
if("MAYBE".equals(s))
arraylist1.add(invitee);
else
arraylist3.add(invitee);
}
}
HashMap hashmap = queryCirclesForPeople(inviteelist.invitees);
EsMatrixCursor em = new EsMatrixCursor(INVITEE_PROJECTION);
insertInviteeGroup(plusevent, "ATTENDING", arraylist, ((EsMatrixCursor) (em)), hashmap);
insertInviteeGroup(plusevent, "MAYBE", arraylist1, ((EsMatrixCursor) (em)), hashmap);
insertInviteeGroup(plusevent, "NOT_ATTENDING", arraylist2, ((EsMatrixCursor) (em)), hashmap);
insertInviteeGroup(plusevent, "NOT_RESPONDED", arraylist3, ((EsMatrixCursor) (em)), hashmap);
insertInviteeGroup(plusevent, "REMOVED", arraylist4, ((EsMatrixCursor) (em)), hashmap);
return em;
}
}
private static interface CircleQuery {
public static final String PROJECTION[] = { "gaia_id",
"packed_circle_ids" };
}
}