package com.cundong.izhihu.db; import java.util.ArrayList; import android.content.ContentValues; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.text.TextUtils; import com.cundong.izhihu.entity.NewsListEntity.NewsEntity; /** * 类说明: 新闻收藏夹,数据库帮助类 * * @date 2014-10-7 * @version 1.0 */ public final class NewsFavoriteDataSource extends BaseDataSource { private SQLiteDatabase database; private String[] allColumns = { DatabaseHelper.FAVORITE_COLUMN_ID, DatabaseHelper.FAVORITE_COLUMN_NEWS_ID, DatabaseHelper.FAVORITE_COLUMN_NEWS_TITLE, DatabaseHelper.FAVORITE_COLUMN_NEWS_LOGO, DatabaseHelper.FAVORITE_COLUMN_NEWS_SHARE_URL }; public NewsFavoriteDataSource(DatabaseHelper dbHelper) { database = dbHelper.getWritableDatabase(); } private void insert(String newsId, String newsTitle, String newsLogo, String newsShareUrl) { ContentValues values = new ContentValues(); values.put(DatabaseHelper.FAVORITE_COLUMN_NEWS_ID, newsId); values.put(DatabaseHelper.FAVORITE_COLUMN_NEWS_TITLE, newsTitle); values.put(DatabaseHelper.FAVORITE_COLUMN_NEWS_LOGO, newsLogo); values.put(DatabaseHelper.FAVORITE_COLUMN_NEWS_SHARE_URL, newsShareUrl); database.insert(DatabaseHelper.FAVORITE_TABLE_NAME, null, values); } /** * 收藏 * * @param newsId * @param newsTitle * @param newsLogo * @param newsShareUrl * @return */ public boolean add2Favorite(String newsId, String newsTitle, String newsLogo, String newsShareUrl) { if (TextUtils.isEmpty(newsId)) return false; if (!isInFavorite(newsId)) { insert(newsId, newsTitle, newsLogo, newsShareUrl); return true; } else { return false; } } /** * 新闻是否已收藏 * * @param newsId * @return */ public boolean isInFavorite(String newsId) { boolean result = false; Cursor cursor = database.query(DatabaseHelper.FAVORITE_TABLE_NAME, allColumns, DatabaseHelper.FAVORITE_COLUMN_NEWS_ID + " = '" + newsId + "'", null, null, null, null); if (cursor != null && cursor.getCount() > 0 && cursor.moveToFirst()) { result = true; } cursor.close(); return result; } /** * 获取收藏夹中所有新闻 * * @return */ public ArrayList<NewsEntity> getFavoriteList() { ArrayList<NewsEntity> newsList = new ArrayList<NewsEntity>(); String orderBy = DatabaseHelper.FAVORITE_COLUMN_ID + " DESC"; Cursor cursor = database.query(DatabaseHelper.FAVORITE_TABLE_NAME, allColumns, null, null, null, null, orderBy); if (cursor != null && cursor.getCount() > 0 && cursor.moveToFirst()) { while (!cursor.isAfterLast()) { NewsEntity newsEntity = new NewsEntity(); String newsId = cursor.getString(cursor.getColumnIndex(DatabaseHelper.FAVORITE_COLUMN_NEWS_ID)); String newsTitle = cursor.getString(cursor.getColumnIndex(DatabaseHelper.FAVORITE_COLUMN_NEWS_TITLE)); String newsLogo = cursor.getString(cursor.getColumnIndex(DatabaseHelper.FAVORITE_COLUMN_NEWS_LOGO)); String newsShareUrl = cursor.getString(cursor.getColumnIndex(DatabaseHelper.FAVORITE_COLUMN_NEWS_SHARE_URL)); newsEntity.id = Long.parseLong(newsId); newsEntity.title = newsTitle; if (!TextUtils.isEmpty(newsShareUrl)) { ArrayList<String> images = new ArrayList<String>(); images.add(newsLogo); newsEntity.images = images; } newsEntity.share_url = newsShareUrl; newsList.add(newsEntity); cursor.moveToNext(); } } if (cursor != null) { cursor.close(); } return newsList; } public void deleteFromFavorite(String newsId) { String whereClause = DatabaseHelper.FAVORITE_COLUMN_NEWS_ID + "=?"; String [] whereArgs = { String.valueOf(newsId) }; database.delete(DatabaseHelper.FAVORITE_TABLE_NAME, whereClause, whereArgs); } public void deleteFromFavorite() { database.delete(DatabaseHelper.FAVORITE_TABLE_NAME, null, null); } }