package com.abewy.android.apps.klyph.facebook.request; import java.util.ArrayList; import java.util.List; 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.KlyphDevice; import com.abewy.android.apps.klyph.core.fql.serializer.FriendRequestDeserializer; import com.abewy.android.apps.klyph.core.fql.serializer.UserDeserializer; import com.abewy.android.apps.klyph.core.graph.GraphObject; public class UserProfileRequest extends KlyphQuery { @Override public boolean isMultiQuery() { return true; } @Override public String getQuery(String id, String offset) { String query1 = "SELECT uid, name, about_me, activities, affiliations, allowed_restrictions, birthday, birthday_date, books, can_message, can_post, contact_email, currency, current_address, current_location, devices, education, email, email_hashes, first_name, friend_count, friend_request_count, hometown_location, inspirational_people, install_type, interests, is_app_user, is_blocked, languages, last_name, likes_count, locale, meeting_for, meeting_sex, middle_name, movies, music, mutual_friend_count, name_format, notes_count, online_presence, pic, pic_big, pic_big_with_logo, pic_cover, pic_small, pic_small_with_logo, pic_square, pic_square_with_logo, pic_with_logo, political, profile_blurb, profile_update_time, profile_url, proxied_email, quotes, relationship_status, religion, search_tokens, security_settings, sex, significant_other_id, sort_first_name, sort_last_name, sports, status, subscriber_count, third_party_id, timezone, tv, verified, video_upload_limits, wall_count, website, work FROM user WHERE uid = " + id; String query2 = "SELECT uid, relationship, name, birthday FROM family WHERE profile_id IN (SELECT uid FROM #query1)"; String query3 = "SELECT id, url from square_profile_pic WHERE id = " + id + " AND size = " + (int) (KlyphDevice.getDeviceDensity() * 96); String query4 = "SELECT uid1, uid2 FROM friend WHERE�uid1 = me() AND�uid2 = " + id; String query5 = "SELECT is_hidden, message, time, uid_from, uid_to, unread FROM friend_request WHERE (uid_to = me() and uid_from = " + id + ") OR�(uid_to = " + id + " and uid_from = me())"; return multiQuery(query1, query2, query3, query4, query5); } @Override public ArrayList<GraphObject> handleResult(JSONArray[] result) { JSONArray userData = result[0]; JSONArray familyData = result[1]; JSONArray urls = result[2]; JSONArray isFriend = result[3]; JSONArray friendRequest = result[4]; assocData(userData, urls, "uid", "id", "pic", "url"); JSONObject user = userData.optJSONObject(0); ArrayList<GraphObject> data = null; if (user != null) { try { user.put("family", familyData); } catch (JSONException e) { } if (isFriend != null && isFriend.length() == 1) { try { user.putOpt("isFriend", true); } catch (JSONException e) { e.printStackTrace(); } } UserDeserializer deserializer = new UserDeserializer(); data = (ArrayList<GraphObject>) deserializer.deserializeArray(userData); FriendRequestDeserializer frDeserializer = new FriendRequestDeserializer(); List<GraphObject> fr = frDeserializer.deserializeArray(friendRequest); if (fr.size() > 0) { data.add(fr.get(0)); } } else { data = new ArrayList<GraphObject>(); } setHasMoreData(false); return data; } }