package com.uservoice.uservoicesdk.model; import com.uservoice.uservoicesdk.R; import com.uservoice.uservoicesdk.Session; import com.uservoice.uservoicesdk.rest.Callback; import com.uservoice.uservoicesdk.rest.RestTaskCallback; import org.json.JSONException; import org.json.JSONObject; import java.util.ArrayList; import java.util.List; public class Topic extends BaseModel { protected String name; public static Topic ALL_ARTICLES = new Topic() {{ this.name = Session.getInstance().getContext().getString(R.string.uv_all_articles); }}; private int numberOfArticles; public static void loadTopics(final Callback<List<Topic>> callback) { doGet(apiPath("/topics.json"), new RestTaskCallback(callback) { @Override public void onComplete(JSONObject object) throws JSONException { List<Topic> allTopics = deserializeList(object, "topics", Topic.class); List<Topic> topicsWithArticles = new ArrayList<Topic>(allTopics.size()); for (Topic topic : allTopics) { if (topic.getNumberOfArticles() > 0) topicsWithArticles.add(topic); } callback.onModel(topicsWithArticles); } }); } public static void loadTopic(int topicId, final Callback<Topic> callback) { doGet(apiPath("/topics/%d.json", topicId), new RestTaskCallback(callback) { @Override public void onComplete(JSONObject object) throws JSONException { callback.onModel(deserializeObject(object, "topic", Topic.class)); } }); } @Override public void load(JSONObject object) throws JSONException { super.load(object); name = getString(object, "name"); numberOfArticles = object.getInt("article_count"); } public String getName() { return name; } public int getNumberOfArticles() { return numberOfArticles; } @Override public String toString() { return name; } }