package com.buddycloud.model;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.json.JSONArray;
import org.json.JSONObject;
import android.content.Context;
import com.buddycloud.http.BuddycloudHTTPHelper;
import com.buddycloud.preferences.Preferences;
public class SearchChannelsModel extends AbstractModel<JSONArray, JSONArray, String> {
public static final String METADATA_TYPE = "metadata";
public static final String POST_TYPE = "content";
private static final String ENDPOINT = "/search";
private static final int MAX = 5;
private static SearchChannelsModel instance;
private SearchChannelsModel() {}
public static SearchChannelsModel getInstance() {
if (instance == null) {
instance = new SearchChannelsModel();
}
return instance;
}
public void getFromServer(final Context context, final ModelCallback<JSONArray> callback, String... p) {
final String type = p[0];
final String q = p[1];
BuddycloudHTTPHelper.getObject(url(context, type, q), context,
new ModelCallback<JSONObject>() {
@Override
public void success(JSONObject response) {
List<JSONObject> channelItems = new ArrayList<JSONObject>();
JSONArray items = response.optJSONArray("items");
for (int i = 0; i < items.length(); i++) {
Map<String, String> channelItem = new HashMap<String, String>();
JSONObject item = items.optJSONObject(i);
if (type.equals(METADATA_TYPE)) {
channelItem.put("jid", item.optString("jid"));
} else if (type.equals(POST_TYPE)) {
channelItem.put("jid", item.optString("parent_simpleid"));
channelItem.put("post_id", item.optString("id"));
}
channelItems.add(new JSONObject(channelItem));
}
callback.success(new JSONArray(channelItems));
}
@Override
public void error(Throwable throwable) {
callback.error(throwable);
}
});
}
private static String url(Context context, String type, String q) {
String apiAddress = Preferences.getPreference(context, Preferences.API_ADDRESS);
return apiAddress + ENDPOINT + "?type=" + type + "&q=" + q + "&max=" + MAX;
}
@Override
public void save(Context context, JSONArray object,
ModelCallback<JSONArray> callback, String... p) {
// TODO Auto-generated method stub
}
@Override
public JSONArray getFromCache(Context context, String... p) {
// TODO Auto-generated method stub
return null;
}
@Override
public void fill(Context context, ModelCallback<Void> callback, String... p) {
// TODO Auto-generated method stub
}
@Override
public void delete(Context context, ModelCallback<Void> callback, String... p) {
// TODO Auto-generated method stub
}
}