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.PhotoDeserializer; import com.abewy.android.apps.klyph.core.graph.GraphObject; public class PhotoRequest extends KlyphQuery { @Override public boolean isMultiQuery() { return true; } @Override public String getQuery(String id, String offset) { String query1 = "SELECT object_id, aid, pid, owner, src_small, src_small_width, src_small_height, src_big, src_big_width, src_big_height, src, src_width, src_height, link, caption, caption_tags, created, modified, album_object_id, place_id, images, like_info, comment_info, can_delete, target_id, target_type"; query1 += " FROM photo WHERE pid = \"" + id + "\" OR object_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 target_id FROM #query1)"; // Album String query3 = "SELECT�aid, name FROM�album " + "WHERE�object_id IN (SELECT�album_object_id FROM�#query1)"; // Get profile pics String query4 = "SELECT id, url FROM square_profile_pic " + "WHERE id IN (SELECT owner FROM #query1) " + "AND size = " + Klyph.getStandardImageSizeForRequest(); // Get places String query5 = "SELECT page_id, name FROM place " + "WHERE page_id IN (SELECT place_id FROM #query1)"; return multiQuery(query1, query2, query3, query4, query5); } @Override public ArrayList<GraphObject> handleResult(JSONArray[] result) { JSONArray photo = result[0]; JSONArray profiles = result[1]; JSONArray album = result[2]; JSONArray pics = result[3]; JSONArray places = result[4]; assocData2(photo, profiles, "owner", "id", "owner_name", "name", "owner_type", "type"); assocData2(photo, profiles, "owner", "id", "target_name", "name", "target_type", "type"); assocData(photo, album, "album_object_id", "object_id", "album_name", "name"); assocData(photo, pics, "owner", "id", "owner_pic", "url"); assocData(photo, places, "place", "page_id", "place_name", "name"); PhotoDeserializer deserializer = new PhotoDeserializer(); ArrayList<GraphObject> list = (ArrayList<GraphObject>) deserializer.deserializeArray(photo); setHasMoreData(false); return list; } }