/**
* galaxy inc.
* meetup client for android
*/
package com.galaxy.meetup.client.android.api;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.Header;
import android.content.Context;
import android.content.Intent;
import com.galaxy.meetup.client.android.content.EsAccount;
import com.galaxy.meetup.client.android.content.EsPeopleData;
import com.galaxy.meetup.client.android.network.PlusiOperation;
import com.galaxy.meetup.client.android.network.http.HttpOperation;
import com.galaxy.meetup.client.android.service.AndroidNotification;
import com.galaxy.meetup.client.android.service.CircleMembershipManager;
import com.galaxy.meetup.server.client.domain.DataCircleMemberToAdd;
import com.galaxy.meetup.server.client.domain.DataCircleMembershipModificationParams;
import com.galaxy.meetup.server.client.domain.DataCirclePerson;
import com.galaxy.meetup.server.client.domain.request.ModifyMembershipsRequest;
import com.galaxy.meetup.server.client.domain.response.ModifyMembershipsResponse;
import com.galaxy.meetup.server.client.v2.request.Request;
import com.galaxy.meetup.server.client.v2.response.Response;
/**
*
* @author sihai
*
*/
public class SetCircleMembershipOperation extends PlusiOperation {
private final String mCirclesToAdd[];
private final String mCirclesToRemove[];
private final boolean mFireAndForget;
private final String mPersonId;
private final String mPersonName;
private final boolean mUpdateNotification;
public SetCircleMembershipOperation(Context context, EsAccount esaccount, String s, String s1, String as[], String as1[], boolean flag,
boolean flag1, Intent intent, HttpOperation.OperationListener operationlistener)
{
super(context, esaccount, "modifymemberships", intent, operationlistener, ModifyMembershipsResponse.class);
mPersonId = s;
mPersonName = s1;
mCirclesToAdd = as;
mCirclesToRemove = as1;
mFireAndForget = flag;
mUpdateNotification = flag1;
}
protected final void handleResponse(Response response) throws IOException
{
ModifyMembershipsResponse modifymembershipsresponse = (ModifyMembershipsResponse)response;
if(mFireAndForget)
CircleMembershipManager.setCircleMembershipResult(mContext, mAccount, mPersonId, mPersonName, true);
List list = modifymembershipsresponse.circlePerson;
DataCirclePerson datacircleperson = null;
if(list != null)
{
int i = modifymembershipsresponse.circlePerson.size();
datacircleperson = null;
if(i > 0)
datacircleperson = (DataCirclePerson)modifymembershipsresponse.circlePerson.get(0);
}
EsPeopleData.setCircleMembership(mContext, getAccount(), mPersonId, datacircleperson, mCirclesToAdd, mCirclesToRemove);
if(mUpdateNotification)
AndroidNotification.update(mContext, mAccount);
if(mFireAndForget)
CircleMembershipManager.showToastIfNeeded(mContext, getAccount());
}
public final void onHttpReadErrorFromStream(InputStream inputstream, String s, int i, Header aheader[], int j) throws IOException
{
CircleMembershipManager.setCircleMembershipResult(mContext, mAccount, mPersonId, mPersonName, false);
super.onHttpReadErrorFromStream(inputstream, s, i, aheader, j);
}
public final Request populateRequest()
{
int i = 0;
ModifyMembershipsRequest modifymembershipsrequest = new ModifyMembershipsRequest();
modifymembershipsrequest.circleMembershipModificationParams = new DataCircleMembershipModificationParams();
modifymembershipsrequest.circleMembershipModificationParams.person = new ArrayList();
DataCircleMemberToAdd datacirclemembertoadd = new DataCircleMemberToAdd();
datacirclemembertoadd.memberId = EsPeopleData.getCircleMemberId(mPersonId);
datacirclemembertoadd.displayName = mPersonName;
modifymembershipsrequest.circleMembershipModificationParams.person.add(datacirclemembertoadd);
if(mCirclesToAdd != null && mCirclesToAdd.length > 0)
{
modifymembershipsrequest.circleToAdd = new ArrayList();
String as1[] = mCirclesToAdd;
int k = as1.length;
for(int l = 0; l < k; l++)
{
String s1 = as1[l];
modifymembershipsrequest.circleToAdd.add(EsPeopleData.buildCircleId(s1));
}
}
if(mCirclesToRemove != null && mCirclesToRemove.length > 0)
{
modifymembershipsrequest.circleToRemove = new ArrayList();
String as[] = mCirclesToRemove;
for(int j = as.length; i < j; i++)
{
String s = as[i];
modifymembershipsrequest.circleToRemove.add(EsPeopleData.buildCircleId(s));
}
}
return modifymembershipsrequest;
}
}