package com.shaweibo.biu.dao.relationship; 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.dao.timeline.ITimelineBaseDao; import com.shaweibo.biu.db.DataBaseHelper; import com.shaweibo.biu.db.tables.GroupTable; import com.shaweibo.biu.global.Constants; import com.shaweibo.biu.model.BaseListModel; import com.shaweibo.biu.model.GroupListModel; import com.shaweibo.biu.dao.WeiboParameters; import com.google.gson.Gson; import static com.shaweibo.biu.BuildConfig.DEBUG; /** * Created by Administrator on 2015-7-17. */ public class GroupDao implements ITimelineBaseDao{ public GroupListModel mListModel=new GroupListModel(); protected DataBaseHelper mHelper; private static final String TAG = GroupDao.class.getSimpleName(); private Context mContext; public GroupDao(Context context){ mContext=context; mHelper = DataBaseHelper.instance(context); } public GroupListModel getGroups() { WeiboParameters params = new WeiboParameters(); try { String result = HttpClientUtils.doGetRequstWithAceesToken(UrlConstants.FRIENDSHIPS_GROUPS, params); GroupListModel groups=new Gson().fromJson(result.toString(), GroupListModel.class); return groups; } catch (Exception e) { if (DEBUG) { Log.e(TAG, "Cannot get groups"); Log.e(TAG, Log.getStackTraceString(e)); } } return null; } @Override public void loadFromCache() { Cursor cursor = query(); if (cursor.getCount() == 1) { cursor.moveToFirst(); GroupListModel listModel = (GroupListModel) new Gson().fromJson(cursor.getString(1),getListClass()); mListModel.getList().clear(); mListModel.addAll(false,listModel); mListModel.addDefaultGroupsToTop(); } else { try { mListModel = (GroupListModel) getListClass().newInstance(); } catch (Exception e) { } } } @Override public void cache() { SQLiteDatabase db = mHelper.getWritableDatabase(); db.beginTransaction(); db.execSQL(Constants.SQL_DROP_TABLE + GroupTable.NAME); db.execSQL(GroupTable.CREATE); ContentValues values = new ContentValues(); values.put(GroupTable.ID, 1); values.put(GroupTable.JSON, new Gson().toJson(mListModel)); db.insert(GroupTable.NAME, null, values); db.setTransactionSuccessful(); db.endTransaction(); } @Override public void load(boolean isRefresh) { GroupListModel listModel=getGroups(); if(listModel==null) return; mListModel.getList().clear(); mListModel.addAll(false,listModel); } @Override public Cursor query() { return mHelper.getReadableDatabase().query(GroupTable.NAME, null, null, null, null, null, null); } @Override public BaseListModel getList() { return null; } @Override public com.shaweibo.biu.global.Constants.LOADING_STATUS getStatus() { return null; } protected Class<? extends GroupListModel> getListClass() { return GroupListModel.class; } }