package org.aisen.weibo.sina.support.sqlit; import org.aisen.android.common.context.GlobalContext; import org.aisen.android.common.setting.Setting; import org.aisen.android.common.utils.ActivityHelper; import org.aisen.android.component.orm.extra.Extra; import org.aisen.android.component.orm.utils.FieldUtils; import org.aisen.android.network.biz.IResult; import org.aisen.android.network.cache.ICacheUtility; import org.aisen.android.network.http.Params; import org.aisen.weibo.sina.base.AppContext; import org.aisen.weibo.sina.sinasdk.bean.Friendship; import org.aisen.weibo.sina.sinasdk.bean.WeiBoUser; import org.aisen.weibo.sina.support.utils.CacheTimeUtils; import java.util.List; /** * 保存当前登录用户的最多200个好友信息 * * @author wangdan * */ public class BilateralDB implements ICacheUtility { public static void insertFriends(List<WeiBoUser> friendList) { SinaDB.getDB().insert(new Extra(AppContext.getAccount().getUser().getIdstr(), "Bilateral"), friendList); } public static List<WeiBoUser> selectAll() { String selection = String.format(" %s = ? and %s = ? ", FieldUtils.OWNER, FieldUtils.KEY); String[] selectionArgs = new String[]{ AppContext.getAccount().getUser().getIdstr(), "Bilateral" }; return SinaDB.getDB().select(WeiBoUser.class, selection, selectionArgs, null, null, null, "200"); } public static void clear() { SinaDB.getDB().deleteAll(new Extra(AppContext.getAccount().getUser().getIdstr(), "Bilateral"), WeiBoUser.class); } @SuppressWarnings({ "unchecked", "rawtypes" }) @Override public IResult findCacheData(Setting action, Params params) { List<WeiBoUser> userList = selectAll(); if (userList.size() > 0) { Friendship users = new Friendship(); users.setUsers(userList); users.setFromCache(true); users.setOutofdate(CacheTimeUtils.isOutofdate("Bilateral", AppContext.getAccount().getUser())); users.setNext_cursor(ActivityHelper.getIntShareData(GlobalContext.getInstance(), "Bilateral" + AppContext.getAccount().getUser().getIdstr(), 0)); return users; } return null; } @Override public void addCacheData(Setting action, Params params, IResult responseObj) { boolean save = true; if (params.containsKey("uid")) { save = params.getParameter("uid").equals(AppContext.getAccount().getUser().getIdstr()); } else if (params.containsKey("screen_name")) { save = params.getParameter("screen_name").equals(AppContext.getAccount().getUser().getScreen_name()); } if (save) { Friendship users = (Friendship) responseObj; if (users.getUsers().size() > 0) { if (params.containsKey("cursor") && Integer.parseInt(params.getParameter("cursor")) == 0) { CacheTimeUtils.saveTime("Bilateral", AppContext.getAccount().getUser()); clear(); } insertFriends(users.getUsers()); ActivityHelper.putIntShareData(GlobalContext.getInstance(), "Bilateral" + AppContext.getAccount().getUser().getIdstr(), users.getNext_cursor()); } } } }