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.INewsCategoryDao;
import com.roboo.like.netease.database.DBHelper;
import com.roboo.like.netease.model.NewsCategory;
public class NewsCategoryDaoImpl implements INewsCategoryDao
{
private DBHelper helper;
public NewsCategoryDaoImpl(DBHelper helper)
{
super();
this.helper = helper;
}
@Override
public int insert(NewsCategory data)
{
int insertSum = 0;
if (null != data)
{
if (!isNewsCategoryExist(data.getNewsCategoryMD5()))
{
SQLiteDatabase db = helper.getReadableDatabase();
ContentValues values = new ContentValues();
values.put("news_category_md5", data.getNewsCategoryMD5());
values.put("news_category_note", data.getNewsCategoryNote());
values.put("news_category_name", data.getNewsCategoryName());
values.put("news_category_is_customed", data.getNewsCateogryIsCustomed());
values.put("news_category_order", data.getNewsCategoryOrder());
values.put("news_category_url",data.getNewsCategoryUrl());
db.insert(NewsApplication.TABLE_NEWS_CATEGORY_LIST, null, values);
db.close();
insertSum++;
}
}
return insertSum;
}
@Override
public LinkedList<NewsCategory> getCustomedList()
{
LinkedList<NewsCategory> data = null;
SQLiteDatabase db = helper.getReadableDatabase();
String[] columns = new String[] { "news_category_md5,news_category_name,news_category_order,news_category_url" };
String selection = " news_category_is_customed = ?";
String[] selectionArgs = new String[] { "1" };
Cursor cursor = db.query(NewsApplication.TABLE_NEWS_CATEGORY_LIST, columns, selection, selectionArgs, null, null, "news_category_order ASC");
if (null != cursor && cursor.getCount() > 0)
{
data = new LinkedList<NewsCategory>();
for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext())
{
NewsCategory category = new NewsCategory();
category.setNewsCategoryMD5(cursor.getString(0));
category.setNewsCategoryName(cursor.getString(1));
category.setNewsCategoryOrder(cursor.getInt(2));
category.setNewsCategoryUrl(cursor.getString(3));
data.add(category);
}
cursor.close();
db.close();
}
return data;
}
@Override
public boolean isNewsCategoryExist(String newsCategoryMd5)
{
boolean flag = false;
SQLiteDatabase db = helper.getReadableDatabase();
Cursor cursor = db.query(NewsApplication.TABLE_NEWS_CATEGORY_LIST, new String[] { "news_category_md5" }, "news_category_md5 = ?", new String[] { newsCategoryMd5 }, null, null, null);
if (cursor != null && cursor.getCount() > 0)
{
flag = true;
}
cursor.close();
db.close();
return flag;
}
@Override
public LinkedList<NewsCategory> getNewsCategoryList()
{
LinkedList<NewsCategory> data = null;
SQLiteDatabase db = helper.getReadableDatabase();
String[] columns = new String[] { "news_category_md5,news_category_name,news_category_order,news_category_url" };
Cursor cursor = db.query(NewsApplication.TABLE_NEWS_CATEGORY_LIST, columns, null, null, null, null, "news_category_order ASC");
if (null != cursor && cursor.getCount() > 0)
{
data = new LinkedList<NewsCategory>();
for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext())
{
NewsCategory category = new NewsCategory();
category.setNewsCategoryMD5(cursor.getString(0));
category.setNewsCategoryName(cursor.getString(1));
category.setNewsCategoryOrder(cursor.getInt(2));
category.setNewsCategoryUrl(cursor.getString(3));
data.add(category);
}
cursor.close();
db.close();
}
return data;
}
@Override
public boolean updateNewsCategoryState(String newsCategoryMd5, boolean isCustomed)
{
boolean flag = false;
SQLiteDatabase db = helper.getReadableDatabase();
ContentValues values = new ContentValues();
values.put("news_category_is_customed", isCustomed ? "1" : "0");
int tmp = db.update(NewsApplication.TABLE_NEWS_CATEGORY_LIST, values, "news_category_md5= ?", new String[] { newsCategoryMd5 });
if (tmp > 0)
{
flag = true;
}
db.close();
return flag;
}
@Override
public LinkedList<NewsCategory> getUnCustomedList()
{
LinkedList<NewsCategory> allData = getNewsCategoryList();
LinkedList<NewsCategory> customedData = getCustomedList();
if(null != customedData)
{
allData.removeAll(customedData);
}
return allData;
}
@Override
public boolean updateNewsCategoryOrder(String newsCategoryMd5, int order)
{
boolean flag = false;
SQLiteDatabase db = helper.getReadableDatabase();
ContentValues values = new ContentValues();
values.put("news_category_order", order+"");
int tmp = db.update(NewsApplication.TABLE_NEWS_CATEGORY_LIST, values, "news_category_md5= ?", new String[] { newsCategoryMd5 });
if (tmp > 0)
{
flag = true;
}
db.close();
return flag;
}
}