package org.aisen.weibo.sina.support.cache;
import org.aisen.android.common.setting.Setting;
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.support.bean.JokeBean;
import org.aisen.weibo.sina.support.bean.JokeBeans;
import org.aisen.weibo.sina.support.sqlit.SinaDB;
import org.aisen.weibo.sina.support.utils.CacheTimeUtils;
import java.util.List;
/**
* Created by wangdan on 16/3/22.
*/
public class JokesCacheUtility implements ICacheUtility {
@Override
public IResult findCacheData(Setting action, Params params) {
long id = Integer.parseInt(params.getParameter("id"));
int type = Integer.parseInt(params.getParameter("mode"));
// 只有第一次加载数据的时候才加载缓存
if (id == 0) {
// 根据id倒序
String selection = String.format(" %s = ? ", FieldUtils.KEY);
String[] selectionArgs = new String[] { String.valueOf(type) };
List<JokeBean> beanList = SinaDB.getDB().select(JokeBean.class, selection, selectionArgs, null, null, " id desc ", null);
if (beanList.size() > 0) {
JokeBeans beans = new JokeBeans();
JokeBeans.Data data = new JokeBeans.Data();
data.setContents(beanList);
beans.setData(data);
beans.setFromCache(true);
beans.setEndPaging(beanList.size() == 0);
beans.setOutofdate(CacheTimeUtils.isOutofdate("Jokes" + type, null));
return beans;
}
}
return null;
}
@Override
public void addCacheData(Setting action, Params params, IResult result) {
long id = Long.parseLong(params.getParameter("id"));
int type = Integer.parseInt(params.getParameter("mode"));
String direction = params.getParameter("direction");
JokeBeans beans = (JokeBeans) result;
if (id == 0 || ("down".equalsIgnoreCase(direction) && beans.getData().getContents().size() >= 20)) {
SinaDB.getDB().deleteAll(new Extra(null, String.valueOf(type)), JokeBean.class);
}
CacheTimeUtils.saveTime("Jokes" + type, null);
SinaDB.getDB().insert(new Extra(null, String.valueOf(type)), beans.getData().getContents());
}
}