package com.aiyou.bbs.bean; import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.List; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.message.BasicNameValuePair; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import com.aiyou.bbs.utils.BBSManager; import com.aiyou.utils.JsonHelper; import com.aiyou.utils.http.HttpManager; import com.aiyou.utils.logcat.Logcat; import android.content.Context; import android.text.TextUtils; public class Favorite { private static final String TAG = Favorite.class.getSimpleName(); private static final String API_FAVORITE = BBSManager.API_HEAD + "/favorite/"; public static Favorite mFavorite = null; public int level = -1; public boolean has_subfavorites; public List<Board> boards; public Favorite[] subfavorites; public Favorite(String strJson, int level) { this(strJson); this.level = level; } public Favorite(String strJson) { if (TextUtils.isEmpty(strJson)) { return; } try { JSONObject jsonObject = new JSONObject(strJson); level = JsonHelper.getInt(jsonObject, "level"); if (level < 0) { level = 0; } JSONArray subArray = JsonHelper.getJSONArray(jsonObject, "sub_favorite"); if (subArray != null && subArray.length() > 0) { has_subfavorites = true; int length = subArray.length(); subfavorites = new Favorite[length]; for (int i = 0; i < length; i++) { subfavorites[i] = new Favorite(subArray.opt(i).toString()); } } else { has_subfavorites = false; } JSONArray boardArray = JsonHelper.getJSONArray(jsonObject, "board"); if (boardArray != null && boardArray.length() > 0) { int length = boardArray.length(); boards = new ArrayList<>(); for (int i = 0; i < length; i++) { boards.add(new Board(boardArray.opt(i).toString())); } } else { boards = null; } } catch (JSONException e) { e.printStackTrace(); } } public static String getFavorite(Context context, int level) { return HttpManager.getInstance(context).getHttp(context, API_FAVORITE + level + BBSManager.FORMAT + "?appkey=" + BBSManager.APPKEY); } public static String addFavorite(Context context, int level, String name) { return addFavorite(context, level, name, 0); } /** * @param context * @param level * @param name * @param dir 是否为自定义目录:0不是,1是 * @return */ private static String addFavorite(Context context, int level, String name, int dir) { ArrayList<BasicNameValuePair> params = new ArrayList<>(); params.add(new BasicNameValuePair("name", name)); params.add(new BasicNameValuePair("dir", dir + "")); // 封装请求参数的实体对象 UrlEncodedFormEntity entity = null; try { entity = new UrlEncodedFormEntity(params, HttpManager.CHARSET); } catch (UnsupportedEncodingException e) { Logcat.e(TAG, "addFavorite UnsupportedEncodingException"); } return HttpManager.getInstance(context).postHttp(context, API_FAVORITE + "add/" + level + BBSManager.FORMAT + "?appkey=" + BBSManager.APPKEY, entity); } public static String deleteFavorite(Context context, int level, String name) { return deleteFavorite(context, level, name, 0); } private static String deleteFavorite(Context context, int level, String name, int dir) { ArrayList<BasicNameValuePair> params = new ArrayList<>(); params.add(new BasicNameValuePair("name", name)); params.add(new BasicNameValuePair("dir", dir + "")); // 封装请求参数的实体对象 UrlEncodedFormEntity entity = null; try { entity = new UrlEncodedFormEntity(params, HttpManager.CHARSET); } catch (UnsupportedEncodingException e) { Logcat.e(TAG, "addFavorite UnsupportedEncodingException"); } return HttpManager.getInstance(context).postHttp(context, API_FAVORITE + "delete/" + level + BBSManager.FORMAT + "?appkey=" + BBSManager.APPKEY, entity); } public static List<Board> toArticleList(Favorite favorite, List<Board> list) { if (favorite == null || list == null) { return null; } if (favorite.boards != null && favorite.boards.size() > 0) { int length = favorite.boards.size(); for (int i = 0; i < length; i++) { favorite.boards.get(i).favorite_level = favorite.level; list.add(favorite.boards.get(i)); } } if (favorite.has_subfavorites) { for (int i = 0; i < favorite.subfavorites.length; i++) { toArticleList(favorite.subfavorites[i], list); } } return list; } }