package com.abewy.android.apps.klyph.facebook.request;
import java.util.ArrayList;
import org.json.JSONArray;
import android.util.Log;
import com.abewy.android.apps.klyph.Klyph;
import com.abewy.android.apps.klyph.core.fql.serializer.NotificationDeserializer;
import com.abewy.android.apps.klyph.core.graph.GraphObject;
public class PeriodicNotificationRequest extends KlyphQuery
{
@Override
public boolean isMultiQuery()
{
return true;
}
@Override
public String getQuery(String id, String offset)
{
String query1 = "SELECT notification_id, sender_id, recipient_id, created_time, updated_time, title_html, title_text, body_html, body_text, href, app_id, is_unread, is_hidden, object_id, object_type, icon_url FROM notification";
query1 += " WHERE recipient_id=me() AND is_hidden = 0 AND is_unread = 1";
if (offset != null && offset.length() > 0)
query1 += " AND updated_time > " + offset;
query1 += " ORDER BY created_time DESC";
String query2 = "SELECT id, url from square_profile_pic WHERE id IN (SELECT sender_id FROM #query1 WHERE strlen(sender_id) > 0) AND size = "
+ Klyph.getStandardImageSizeForNotification();
String query3 = "SELECT id, name from profile WHERE id IN (SELECT sender_id FROM #query1 WHERE strlen(sender_id) > 0)";
// friend
String query4 = "SELECT uid, name FROM user" + " WHERE�uid IN�(SELECT�object_id FROM�#query1 WHERE strlen(object_id) > 0)";
// event
String query5 = "SELECT eid, name FROM event" + " WHERE�eid IN�(SELECT�object_id FROM�#query1 WHERE strlen(object_id) > 0)";
// page
String query6 = "SELECT page_id, name FROM page" + " WHERE�page_id IN�(SELECT�object_id FROM�#query1 WHERE strlen(object_id) > 0)";
// group
String query7 = "SELECT gid, name FROM group" + " WHERE�gid IN�(SELECT�object_id FROM�#query1 WHERE strlen(object_id) > 0)";
// Stream
String query8 = "SELECT�post_id, object_id FROM�comment WHERE�object_id IN (SELECT�object_id FROM�#query1 WHERE strlen(object_id) > 0)";
return multiQuery(query1, query2, query3, query4, query5, query6, query7, query8);
}
@Override
public ArrayList<GraphObject> handleResult(JSONArray[] result)
{
JSONArray data = result[0];
JSONArray urls = result[1];
JSONArray names = result[2];
JSONArray friends = result[3];
JSONArray events = result[4];
JSONArray pages = result[5];
JSONArray groups = result[6];
JSONArray comments = result[7];
Log.d("NotificationRequest", "size " + data.length());
assocData(data, urls, "sender_id", "id", "sender_pic", "url");
assocData(data, names, "sender_id", "id", "sender_name", "name");
assocStreamToObjectById(data, friends, "object_id", "uid", "friend");
assocStreamToObjectById(data, events, "object_id", "eid", "event");
assocStreamToObjectById(data, pages, "object_id", "page_id", "page");
assocStreamToObjectById(data, groups, "object_id", "gid", "group");
assocStreamToObjectById(data, comments, "object_id", "object_id", "comment");
NotificationDeserializer deserializer = new NotificationDeserializer();
ArrayList<GraphObject> notifications = (ArrayList<GraphObject>) deserializer.deserializeArray(data);
return notifications;
}
}