package com.roboo.like.netease.dao.impl; import java.util.LinkedList; import android.content.ContentValues; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import com.roboo.like.netease.NewsApplication; import com.roboo.like.netease.dao.INewsDao; import com.roboo.like.netease.database.DBHelper; import com.roboo.like.netease.model.News; import com.roboo.like.netease.utils.MD5Utils; public class NewsDaoImpl implements INewsDao { private DBHelper helper; public NewsDaoImpl(DBHelper helper) { this.helper = helper; } @Override public int insert(News news, String newsCategoryMd5) { int insertSum = 0; if (null != news) { if (!isNewsExist(news.getMd5()) && null != newsCategoryMd5) { SQLiteDatabase db = helper.getReadableDatabase(); ContentValues values = new ContentValues(); values.put("news_category_md5", newsCategoryMd5); values.put("news_url", news.getUrl()); values.put("news_src", news.getSrc()); values.put("news_title", news.getTitle()); values.put("news_sub_title", news.getSubTitle()); values.put("news_source", news.getSource()); values.put("news_note", news.getNote()); values.put("news_md5", MD5Utils.generate(news.getUrl())); db.insert(NewsApplication.TABLE_NEWS_LIST, null, values); db.close(); insertSum++; } } return insertSum; } @Override public boolean isNewsExist(String newsMd5) { boolean flag = false; SQLiteDatabase db = helper.getReadableDatabase(); Cursor cursor = db.query(NewsApplication.TABLE_NEWS_LIST, new String[] { "news_md5" }, "news_md5 = ?", new String[] { newsMd5 }, null, null, null); if (cursor != null && cursor.getCount() > 0) { flag = true; } cursor.close(); db.close(); return flag; } public LinkedList<News> getNewsList(String newsCategoryMd5) { LinkedList<News> data = null; SQLiteDatabase db = helper.getWritableDatabase(); String[] columns = new String[] { "news_md5,news_url,news_title,news_sub_title,news_source,news_src,news_note" }; String selection = " news_category_md5 = ?"; String[] selectionArgs = new String[] { newsCategoryMd5 }; Cursor cursor = db.query(NewsApplication.TABLE_NEWS_LIST, columns, selection, selectionArgs, null, null, null); if (null != cursor && cursor.getCount() > 0) { data = new LinkedList<News>(); for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) { News news = new News(); news.setNewsCategoryMd5(newsCategoryMd5); news.setMd5(cursor.getString(0)); news.setUrl(cursor.getString(1)); news.setTitle(cursor.getString(2)); news.setSubTitle(cursor.getString(3)); news.setSource(cursor.getString(4)); news.setSrc(cursor.getString(5)); news.setNote(cursor.getString(6)); data.add(news); } } cursor.close(); db.close(); return data; } @Override public boolean delete(String newsCategoryMd5) { boolean flag = false; SQLiteDatabase db = helper.getReadableDatabase(); int effectCount = db.delete(NewsApplication.TABLE_NEWS_LIST, "news_category_md5 = ?", new String[] { newsCategoryMd5 }); flag = effectCount > 0; db.close(); return flag; } }