/** * galaxy inc. * meetup client for android */ package com.galaxy.meetup.client.android.api; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import android.content.Context; import android.content.Intent; import android.text.TextUtils; import com.galaxy.meetup.client.android.content.DataNotificationSettingsDeliveryOption; import com.galaxy.meetup.client.android.content.EsAccount; import com.galaxy.meetup.client.android.content.NotificationSetting; import com.galaxy.meetup.client.android.content.NotificationSettingsCategory; import com.galaxy.meetup.client.android.content.NotificationSettingsData; import com.galaxy.meetup.client.android.network.PlusiOperation; import com.galaxy.meetup.client.android.network.http.HttpOperation; import com.galaxy.meetup.server.client.domain.DataMobileSettings; import com.galaxy.meetup.server.client.domain.DataNotificationSettings; import com.galaxy.meetup.server.client.domain.DataNotificationSettingsFetchParams; import com.galaxy.meetup.server.client.domain.DataNotificationSettingsNotificationsSettingsCategoryInfo; import com.galaxy.meetup.server.client.domain.request.SettingsFetchRequest; import com.galaxy.meetup.server.client.domain.response.SettingsFetchResponse; import com.galaxy.meetup.server.client.v2.request.Request; import com.galaxy.meetup.server.client.v2.response.Response; /** * * @author sihai * */ public class GetNotificationSettingsOperation extends PlusiOperation { private NotificationSettingsData mNotificationSettings; public GetNotificationSettingsOperation(Context context, EsAccount esaccount, Intent intent, HttpOperation.OperationListener operationlistener) { super(context, esaccount, "settingsfetch", intent, operationlistener, SettingsFetchResponse.class); } public final NotificationSettingsData getNotificationSettings() { return mNotificationSettings; } protected final void handleResponse(Response response) throws IOException { int i = 0; SettingsFetchResponse settingsfetchresponse = (SettingsFetchResponse)response; if(settingsfetchresponse.settings == null || settingsfetchresponse.settings.notificationSettings == null) throw new ProtocolException("Notification settings missing from response"); DataNotificationSettings datanotificationsettings = settingsfetchresponse.settings.notificationSettings; DataMobileSettings datamobilesettings = settingsfetchresponse.settings.mobileSettings; if(datanotificationsettings.deliveryOption == null || datanotificationsettings.categoryInfo == null || datamobilesettings == null || datamobilesettings.mobileNotificationType == null) throw new ProtocolException("Invalid notification settings response"); HashMap hashmap = new HashMap(); List list = datanotificationsettings.deliveryOption; int j = list.size(); for(int k = 0; k < j; k++) { DataNotificationSettingsDeliveryOption datanotificationsettingsdeliveryoption = (DataNotificationSettingsDeliveryOption)list.get(k); String s = datanotificationsettingsdeliveryoption.category; if(TextUtils.isEmpty(s) || TextUtils.isEmpty(datanotificationsettingsdeliveryoption.description)) continue; Object obj = (List)hashmap.get(s); if(obj == null) obj = new ArrayList(); ((List) (obj)).add(new NotificationSetting(datanotificationsettingsdeliveryoption)); hashmap.put(s, obj); } List list1 = datanotificationsettings.categoryInfo; int l = list1.size(); ArrayList arraylist = new ArrayList(l); for(; i < l; i++) { DataNotificationSettingsNotificationsSettingsCategoryInfo datanotificationsettingsnotificationssettingscategoryinfo = (DataNotificationSettingsNotificationsSettingsCategoryInfo)list1.get(i); if(!TextUtils.isEmpty(datanotificationsettingsnotificationssettingscategoryinfo.description)) { List list2 = (List)hashmap.get(datanotificationsettingsnotificationssettingscategoryinfo.category); arraylist.add(new NotificationSettingsCategory(datanotificationsettingsnotificationssettingscategoryinfo.description, list2)); } } mNotificationSettings = new NotificationSettingsData(datanotificationsettings.emailAddress, datamobilesettings.mobileNotificationType, arraylist); } protected final Request populateRequest() { SettingsFetchRequest settingsfetchrequest = new SettingsFetchRequest(); DataNotificationSettingsFetchParams datanotificationsettingsfetchparams = new DataNotificationSettingsFetchParams(); datanotificationsettingsfetchparams.fetchSettingsDescription = Boolean.valueOf(true); datanotificationsettingsfetchparams.fetchPlusPageSettings = Boolean.valueOf(false); datanotificationsettingsfetchparams.fetchAlternateEmailAddress = Boolean.valueOf(false); datanotificationsettingsfetchparams.fetchWhoCanNotifyMe = Boolean.valueOf(false); datanotificationsettingsfetchparams.typeGroupToFetch = GetNotificationsOperation.TYPE_GROUP_TO_FETCH; settingsfetchrequest.notificationSettingsFetchParams = datanotificationsettingsfetchparams; return settingsfetchrequest; } }