package com.abewy.android.apps.klyph.facebook.request; import java.util.ArrayList; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import com.abewy.android.apps.klyph.Klyph; import com.abewy.android.apps.klyph.core.fql.serializer.FriendRequestDeserializer; import com.abewy.android.apps.klyph.core.graph.GraphObject; public class FriendsRequestNotificationRequest extends KlyphQuery { @Override public boolean isMultiQuery() { return true; } @Override public String getQuery(String id, String offset) { String query1 = "SELECT is_hidden, message, time, uid_from, uid_to, unread FROM friend_request WHERE uid_to = me() AND is_hidden = 0 AND unread = 1 "; if (offset != null) query1 += "AND time > " + offset; String query2 = "SELECT id, url from square_profile_pic WHERE id IN (SELECT uid_from FROM #query1) AND size = " + Klyph.getStandardImageSizeForRequest(); String query3 = "SELECT id, name from profile WHERE id IN (SELECT uid_from FROM #query1)"; return multiQuery(query1, query2, query3); } @Override public ArrayList<GraphObject> handleResult(JSONArray[] result) { JSONArray data = result[0]; JSONArray urls = result[1]; JSONArray names = result[2]; for (int i = 0; i < urls.length(); i++) { JSONObject jsonObject = urls.optJSONObject(i); try { jsonObject.putOpt("id", String.valueOf(jsonObject.opt("id"))); } catch (JSONException e) { //e.printStackTrace(); } } for (int i = 0; i < names.length(); i++) { JSONObject jsonObject = names.optJSONObject(i); try { jsonObject.putOpt("id", String.valueOf(jsonObject.opt("id"))); } catch (JSONException e) { //e.printStackTrace(); } } assocData(data, urls, "uid_from", "id", "uid_from_pic", "url"); assocData(data, names, "uid_from", "id", "uid_from_name", "name"); FriendRequestDeserializer deserializer = new FriendRequestDeserializer(); ArrayList<GraphObject> friendRequests = (ArrayList<GraphObject>) deserializer.deserializeArray(data); return friendRequests; } }