package com.shaweibo.biu.dao.timeline; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.util.Log; import com.shaweibo.biu.dao.UrlConstants; import com.shaweibo.biu.dao.HttpClientUtils; import com.shaweibo.biu.db.DataBaseHelper; import com.shaweibo.biu.db.tables.HomeTimeLineTable; import com.shaweibo.biu.model.MessageListModel; import com.shaweibo.biu.dao.WeiboParameters; import com.google.gson.Gson; import com.shaweibo.biu.global.Constants; import static com.shaweibo.biu.BuildConfig.DEBUG; /* Time Line of me and my friends */ public class StatusTimeLineDao extends BaseTimelineDao <MessageListModel> { private static final String TAG = StatusTimeLineDao.class.getSimpleName(); public static final String GROUP_BILATERAL = "groups_bilateral"; public static final String GROUP_ALL = "groups_all"; protected DataBaseHelper mHelper; private Context mContext; public String mGroupId; public Constants.LOADING_STATUS mStatus; public StatusTimeLineDao(Context context,String groupId) { mHelper = DataBaseHelper.instance(context); mContext = context; mStatus= Constants.LOADING_STATUS.NORMAL; mGroupId=groupId; } @Override public void cache() { SQLiteDatabase db = mHelper.getWritableDatabase(); db.beginTransaction(); db.delete(HomeTimeLineTable.NAME, HomeTimeLineTable.GROUP_ID + " =? ", new String[]{mGroupId}); ContentValues values = new ContentValues(); values.put(HomeTimeLineTable.GROUP_ID, mGroupId); values.put(HomeTimeLineTable.JSON, new Gson().toJson(mListModel)); db.insert(HomeTimeLineTable.NAME, null, values); db.setTransactionSuccessful(); db.endTransaction(); } @Override public Cursor query() { return mHelper.getReadableDatabase().query(HomeTimeLineTable.NAME, null, HomeTimeLineTable.GROUP_ID+ " = ?", new String[]{mGroupId}, null, null, null); } @Override public void spanAll(MessageListModel messageListModel) { messageListModel.spanAll(mContext); } @Override public MessageListModel load() { MessageListModel model; if(mGroupId.equals(GROUP_ALL)){ model =getHomeTimeLine(Constants.HOME_TIMELINE_PAGE_SIZE, ++mCurrentPage); } else if(mGroupId.equals(GROUP_BILATERAL)){ model= getBilateralTimeLine(Constants.HOME_TIMELINE_PAGE_SIZE, ++mCurrentPage); } else{ model= getGroupTimelines(mGroupId, Constants.HOME_TIMELINE_PAGE_SIZE, ++mCurrentPage); } return model; } @Override protected Class<? extends MessageListModel> getListClass() { return MessageListModel.class ; } public static MessageListModel getHomeTimeLine(int count, int page) { WeiboParameters params = new WeiboParameters(); params.put("count", count); params.put("page", page); try { String json = HttpClientUtils.doGetRequstWithAceesToken(UrlConstants.HOME_TIMELINE, params); return new Gson().fromJson(json, MessageListModel.class); } catch (Exception e) { if (DEBUG) { Log.d(TAG, "Can't get home timeline, " + e.getClass().getSimpleName()); Log.d(TAG, Log.getStackTraceString(e)); } return null; } } public static MessageListModel getGroupTimelines(String groupId, int count, int page) { WeiboParameters params = new WeiboParameters(); params.put("list_id", groupId); params.put("count", count); params.put("page", page); try { String json = HttpClientUtils.doGetRequstWithAceesToken(UrlConstants.FRIENDSHIPS_GROUPS_TIMELINE, params); return new Gson().fromJson(json, MessageListModel.class); } catch (Exception e) { if (DEBUG) { Log.e(TAG, "Cannot get group timeline"); Log.e(TAG, Log.getStackTraceString(e)); } } return null; } public static MessageListModel getBilateralTimeLine(int count, int page) { WeiboParameters params = new WeiboParameters(); params.put("count", count); params.put("page", page); try { String json = HttpClientUtils.doGetRequstWithAceesToken(UrlConstants.BILATERAL_TIMELINE, params); return new Gson().fromJson(json, MessageListModel.class); } catch (Exception e) { if (DEBUG) { Log.d(TAG, "Cannot get bilateral timeline, " + e.getClass().getSimpleName()); Log.d(TAG, Log.getStackTraceString(e)); } return null; } } }