package com.abewy.android.apps.klyph.facebook.request; import java.util.ArrayList; import org.json.JSONArray; import com.abewy.android.apps.klyph.Klyph; import com.abewy.android.apps.klyph.core.fql.serializer.LinkDeserializer; import com.abewy.android.apps.klyph.core.graph.GraphObject; public class LinkRequest extends KlyphQuery { @Override public boolean isMultiQuery() { return true; } @Override public String getQuery(String id, String offset) { // Get liked links String query1 = "SELECT caption, comment_info, created_time, image_urls, like_info, link_id, owner, owner_comment, picture, summary, title, url, via_id " + "FROM link WHERE link_id = " + id; // Get source/target users and pages String query2 = "SELECT id, name, type from profile " + "WHERE id IN (SELECT owner FROM #query1) " + "OR id IN (SELECT via_id FROM #query1) "; // Get profile pics String query3 = "SELECT id, url FROM square_profile_pic " + "WHERE id IN (SELECT owner FROM #query1) " + "AND size = " + Klyph.getStandardImageSizeForRequest(); return multiQuery(query1, query2, query3); } @Override public ArrayList<GraphObject> handleResult(JSONArray[] result) { JSONArray links = result[0]; JSONArray profiles = result[1]; JSONArray pics = result[2]; assocData2(links, profiles, "owner", "id", "owner_name", "name", "owner_type", "type"); assocData2(links, profiles, "via_id", "id", "via_name", "name", "via_type", "type"); assocData(links, pics, "owner", "id", "owner_pic", "url"); LinkDeserializer sDeserializer = new LinkDeserializer(); ArrayList<GraphObject> link = (ArrayList<GraphObject>) sDeserializer.deserializeArray(links); setHasMoreData(false); return link; } }