package com.pps.db.service.imp;
import java.util.ArrayList;
import java.util.List;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import com.pps.db.DBConfig;
import com.pps.db.DBHelper;
import com.pps.db.service.ChannelListServiceInterface;
import com.pps.model.SubModel;
/**
* 进行列表缓存与分页处理
* @author jiangqingqing
* @time 2013/09/11 14:17
*/
public class ChannelListServiceImp implements ChannelListServiceInterface {
private DBHelper dbHelper;
private SQLiteDatabase dbDatabase;
private List<SubModel> mLists;
private SubModel mModel;
public ChannelListServiceImp(Context pContext) {
dbHelper = new DBHelper(pContext);
}
/*
* (non-Javadoc) 返回所有的列表集合
* @see com.pps.db.service.ChannelListServiceInterface#queryAllCacheChannel()
*/
@Override
public List<SubModel> queryAllCacheChannel() {
dbDatabase=dbHelper.getWritableDatabase();
Cursor mCursor= dbDatabase.query(DBConfig.TABLE_NAME, DBConfig.COLUMNS, null, null, null, null,
null);
if(mCursor!=null&&mCursor.getCount()>=0)
{
mLists=new ArrayList<SubModel>();
while(mCursor.moveToNext())
{
mModel=new SubModel();
mModel.setImg(mCursor.getString(mCursor.getColumnIndex(DBConfig.CHANNEL_IMG)));
mModel.setName(mCursor.getString(mCursor.getColumnIndex(DBConfig.CHANNEL_NAME)));
mModel.setTp(mCursor.getString(mCursor.getColumnIndex(DBConfig.CHANNEL_TP)));
mModel.setOn(mCursor.getInt(mCursor.getColumnIndex(DBConfig.CHANNEL_ON)));
mModel.setVm(mCursor.getFloat(mCursor.getColumnIndex(DBConfig.CHANNEL_VM)));
mModel.setId(mCursor.getInt(mCursor.getColumnIndex(DBConfig.CHANNEL_SUBID)));
mLists.add(mModel);
}
}
close();
return mLists;
}
/*
* (non-Javadoc) 进行列表的分页查询
* @prams pLimited 每页进行显示的列表数量
* @prams offest 进行查询的偏移量
* @see com.pps.db.service.ChannelListServiceInterface#queryChanenlByLimited(int, int)
*/
public List<SubModel> queryChanenlByLimited(int pLimited,int offest)
{
List<SubModel> mLists = null;
String sqlStr="select * from channel_table order by channel_id limit ? offset ?";
dbDatabase = dbHelper.getReadableDatabase();
Cursor mCursor= dbDatabase.rawQuery(sqlStr, new String[]{String.valueOf(pLimited),String.valueOf(offest)});
if(mCursor!=null&&mCursor.getCount()>0){
mLists=new ArrayList<SubModel>(mCursor.getCount());
while(mCursor.moveToNext()){
mModel=new SubModel();
mModel.setImg(mCursor.getString(mCursor.getColumnIndex(DBConfig.CHANNEL_IMG)));
mModel.setName(mCursor.getString(mCursor.getColumnIndex(DBConfig.CHANNEL_NAME)));
mModel.setTp(mCursor.getString(mCursor.getColumnIndex(DBConfig.CHANNEL_TP)));
mModel.setOn(mCursor.getInt(mCursor.getColumnIndex(DBConfig.CHANNEL_ON)));
mModel.setVm(mCursor.getFloat(mCursor.getColumnIndex(DBConfig.CHANNEL_VM)));
mModel.setId(mCursor.getInt(mCursor.getColumnIndex(DBConfig.CHANNEL_SUBID)));
mLists.add(mModel);
}
close();
}
return mLists;
}
/*
* (non-Javadoc) 插入单个节目的对象
* @see com.pps.db.service.ChannelListServiceInterface#insertSingleChannel(com.pps.model.SubModel)
*/
@Override
public boolean insertSingleChannel(SubModel pSubModel) {
dbDatabase = dbHelper.getWritableDatabase();
ContentValues mValues=new ContentValues(1);
mValues.put(DBConfig.CHANNEL_IMG, pSubModel.getImg());
mValues.put(DBConfig.CHANNEL_NAME, pSubModel.getName());
mValues.put(DBConfig.CHANNEL_TP, pSubModel.getTp());
mValues.put(DBConfig.CHANNEL_ON, pSubModel.getOn());
mValues.put(DBConfig.CHANNEL_VM, pSubModel.getVm());
mValues.put(DBConfig.CHANNEL_SUBID, pSubModel.getId());
long result= dbDatabase.insert(DBConfig.TABLE_NAME, null, mValues);
close();
if(result!=-1)
{
return true;
}
return false;
}
/*
* (non-Javadoc) 一次性插入节目的集合
* @see com.pps.db.service.ChannelListServiceInterface#insertChannelList(java.util.List)
*/
@Override
public boolean insertChannelList(List<SubModel> pLists) {
for (SubModel mSubModel : pLists) {
if(!insertSingleChannel(mSubModel))
{
return false;
}
}
return true;
}
/*
* (non-Javadoc) 删除数据库中所有的列表
* @see com.pps.db.service.ChannelListServiceInterface#deleteAllCacheChannel()
*/
@Override
public boolean deleteAllCacheChannel() {
dbDatabase=dbHelper.getWritableDatabase();
int result=dbDatabase.delete(DBConfig.TABLE_NAME, null, null);
close();
if(result!=0)
{
return true;
}
return false;
}
/**
* 关闭数据库对象
*/
private void close()
{
if(dbDatabase!=null)
{
dbDatabase.close();
}
}
}