package org.aisen.weibo.sina.support.cache; import java.util.HashMap; import org.aisen.weibo.sina.support.utils.AppContext; import org.aisen.weibo.sina.support.utils.AppSettings; import org.aisen.weibo.sina.support.utils.CacheTimeUtils; import org.sina.android.bean.StatusContents; import com.m.common.params.Params; import com.m.common.settings.Setting; import com.m.common.utils.Logger; import com.m.support.cache.ICacheUtility; public class TimelineMemoryCacheUtility implements ICacheUtility { private static HashMap<String, StatusContents> statusMap = new HashMap<String, StatusContents>(); public static boolean isEmpty() { return statusMap.size() == 0; } public static void clear() { Logger.w(TimelineCacheUtility.TAG, "清理内存数据"); statusMap.clear(); } @SuppressWarnings({ "unchecked", "rawtypes" }) @Override public <T> Cache<T> findCacheData(Setting action, Params params, Class<T> responseCls) { if (AppSettings.isDisableCache()) return null; if (!AppContext.isLogedin()) return null; // 如果是用户微博,只返回用户的微博 if (action.getValue().equals("statuses/user_timeline.json")) { // 是当前登录用户 if (params.containsKey("user_id") && params.getParameter("user_id").equals(AppContext.getUser().getIdstr())) { } else if (params.containsKey("screen_name") && params.getParameter("screen_name").equals(AppContext.getUser().getScreen_name())) { } else { return null; } } String key = TimelineCacheUtility.getCacheKey(action, params); StatusContents statusContents = statusMap.get(key); if (statusContents != null) { statusContents.setCache(true); statusContents.setExpired(CacheTimeUtils.isExpired(TimelineCacheUtility.getCacheKey(action, params), AppContext.getUser())); Logger.w(TimelineCacheUtility.TAG, String.format("返回内存微博数据,共%d条", statusContents.getStatuses().size())); return new Cache((T) statusContents, false); } return null; } @Override public void addCacheData(Setting action, Params params, Object responseObj) { StatusContents statusContents = (StatusContents) responseObj; if (statusContents.getStatuses().size() == 0) return; // 如果是用户微博 if (action.getValue().equals("statuses/user_timeline.json")) { // 是当前登录用户 if (params.containsKey("user_id") && params.getParameter("user_id").equals(AppContext.getUser().getIdstr())) { } else if (params.containsKey("screen_name") && params.getParameter("screen_name").equals(AppContext.getUser().getScreen_name())) { } else { return; } } Logger.w(TimelineCacheUtility.TAG, String.format("写入内存微博数据,共%d条", statusContents.getStatuses().size())); String key = TimelineCacheUtility.getCacheKey(action, params); statusMap.put(key, statusContents); } }