package com.kitty.poclient.dao;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;
import com.kitty.poclient.db.DBHelper;
import com.kitty.poclient.domain.Music;
import com.kitty.poclient.domain.Pack;
public class PackDao {
/**
*根据id检测是否存pack
*/
public boolean checkPackId(long id){
Cursor cur=DBHelper.getSqLitedatabase().rawQuery("select id from db_pack where id="+id,null);
if(cur.getCount()>0){
return true;
}
if(cur!=null){
cur.close();
}
return false;
}
/**
* 插入pack
*/
public void insertPack(Pack pack){
if(pack==null){
return ;
}
try{
DBHelper.getSqLitedatabase().beginTransaction();
if(!checkPackId(pack.getId())){
ContentValues addv=new ContentValues();
addv.put("id",pack.getId());
addv.put("name",pack.getName());
addv.put("image_url",pack.getImgurl());
addv.put("buytime",pack.getBuytime());
addv.put("libraryid",pack.getLibraryid());
addv.put("isclearcache",pack.getIsCloud());
if(DBHelper.getSqLitedatabase().insert("db_pack",null,addv)>0){
addv.clear();
addv.put("pack_id", pack.getId());
for(String musicid:pack.getMusicids()){
addv.put("product_id",musicid);
DBHelper.getSqLitedatabase().insert("product_pack", null,addv );
String updateMusicSql="update db_music set pack_id = "+pack.getId() +" where id ="+musicid;
DBHelper.getSqLitedatabase().execSQL(updateMusicSql);
}
}
}else{
DBHelper.getSqLitedatabase().execSQL("update db_pack set isclearcache ="+pack.getIsCloud()+" where id="+pack.getId());
}
}finally{
DBHelper.getSqLitedatabase().setTransactionSuccessful();
DBHelper.getSqLitedatabase().endTransaction();
}
}
/**
*查找所有主题
*/
public List<Pack> getAllPack(){
SQLiteDatabase mdb=DBHelper.getSqLitedatabase();
Cursor cur= mdb.rawQuery("select d.id ,d.name,d.image_url ,count(*) from db_pack d inner join product_pack pp on pp.pack_id =d.id inner join db_music pm on pm.id=pp.product_id where d.isclearcache = 5 group by d.id order by d.buytime desc", null);
List<Pack> li= new ArrayList<Pack>();
if(cur!=null){
if(cur.getCount()==0){
return null;
}
Pack pack=null;
while (cur.moveToNext()){//
pack=new Pack();
pack.setId(cur.getLong(0));
pack.setName(cur.getString(1));
pack.setImgurl(cur.getString(2));
pack.setMcount(cur.getInt(3));
pack.setIsCloud(5);
li.add(pack);
}
if(cur!=null){
cur.close();
}
}
return li;
}
/**
* 根据id查看主题详情
*/
public Pack getPackDetailById(Pack pack ){
if(pack==null){
return null;
}
SQLiteDatabase mdb=DBHelper.getSqLitedatabase();
String sql="select tempsmus.name ,tempsmus.media_url,tempsmus.id,tempsmus.img_url ,tempsmus.artistname from (select db_music.name,db_music.id,db_music.media_url,db_music.disk_id,db_music.first_char,db_album.img_url ,dba.name artistname,db_music.isclearcache from db_music inner join db_disk on db_music.disk_id =db_disk.id inner join db_album on db_album.id =db_disk.album_id inner join product_artist pa on pa.product_id =db_music.id left join db_artist dba on dba.id =pa.artist_id where db_music.isclearcache = 5 group by db_music.id order by db_music.id desc ) tempsmus inner join product_pack pp on pp.product_id = tempsmus.id inner join db_pack dbp on dbp.id=pp.pack_id where dbp.id="+pack.getId();
Cursor cur= mdb.rawQuery(sql, null);
List<Music> musicli=new ArrayList<Music>();
if(cur!=null){
Music music=null;
while(cur.moveToNext()){
music=new Music();
music.setName(cur.getString(0));
music.setMediaurl(cur.getString(1));
music.setId(cur.getLong(2));
music.setImgUrl(cur.getString(3));
music.setArtistName(cur.getString(4));
music.setIscloud(5);
musicli.add(music);
}
pack.setLi(musicli);
pack.setIsCloud(5);
if(cur!=null){
cur.close();
}
}
return pack;
}
/**
* 更新清楚缓存状态信息
* @param map
*/
public boolean updateCloudStates(Map<String,List<Long>> map, boolean noAlbum){
List<Long> li=map.get("themes");
ContentValues addv=new ContentValues();
boolean flag=true;
try{
DBHelper.getSqLitedatabase().beginTransaction();
// addv.put("isclearcache", 5);//5表示需要显示的
String ids="";
String sqlall="update db_pack set isclearcache = 0";
DBHelper.getSqLitedatabase().execSQL(sqlall); //全部显示
for(Long l:li){
ids=ids+l+",";
}
//如果专辑已清空,不显示主题
if(!ids.equals("")&&!noAlbum){
Log.i("UpdateCloudTest", "ids:" + ids);
ids= ids.substring(0,ids.length()-1);
String updateisclear="update db_pack set isclearcache = 5 where id in ( "+ids +" )";
DBHelper.getSqLitedatabase().execSQL( updateisclear);
}
DBHelper.getSqLitedatabase().setTransactionSuccessful();
}catch(Exception e){
e.printStackTrace();
flag=false;
}finally{
DBHelper.getSqLitedatabase().endTransaction();
}
return flag;
}
/**
* 在云端
*/
public List<Pack> getPackListForCloud(long pageIndex,int pageSize){
SQLiteDatabase mdb=DBHelper.getSqLitedatabase();
Cursor cur= mdb.rawQuery("select d.id ,d.name,d.image_url ,count(*),d.isclearcache from db_pack d inner join product_pack pp on pp.pack_id =d.id inner join db_music pm on pm.id=pp.product_id where d.isclearcache != 5 group by d.id order by d.buytime desc limit "+pageIndex+" , "+pageSize, null);
List<Pack> li= new ArrayList<Pack>();
if(cur!=null){
if(cur.getCount()==0){
return null;
}
Pack pack=null;
while (cur.moveToNext()){//
pack=new Pack();
pack.setId(cur.getLong(0));
pack.setName(cur.getString(1));
pack.setImgurl(cur.getString(2));
pack.setMcount(cur.getInt(3));
pack.setIsCloud(cur.getInt(4));
li.add(pack);
}
if(cur!=null){
cur.close();
}
}
return li;
}
/**
* 全部数据 本地和云端
*/
public List<Pack> getAllPackList(long pageIndex,int pageSize){
SQLiteDatabase mdb=DBHelper.getSqLitedatabase();
Cursor cur= mdb.rawQuery("select d.id ,d.name,d.image_url ,count(*),d.isclearcache from db_pack d inner join product_pack pp on pp.pack_id =d.id inner join db_music pm on pm.id=pp.product_id group by d.id order by d.buytime desc limit "+pageIndex+" , "+pageSize, null);
List<Pack> li= new ArrayList<Pack>();
if(cur!=null){
if(cur.getCount()==0){
return null;
}
Pack pack=null;
while (cur.moveToNext()){//
pack=new Pack();
pack.setId(cur.getLong(0));
pack.setName(cur.getString(1));
pack.setImgurl(cur.getString(2));
pack.setMcount(cur.getInt(3));
pack.setIsCloud(cur.getInt(4));
li.add(pack);
}
if(cur!=null){
cur.close();
}
}
return li;
}
/**
*查找所有主题
*/
public List<Pack> getAllPack(long pageIndex,int pageSize){
SQLiteDatabase mdb=DBHelper.getSqLitedatabase();
Cursor cur= mdb.rawQuery("select d.id ,d.name,d.image_url ,count(*),d.isclearcache from db_pack d inner join product_pack pp on pp.pack_id =d.id inner join db_music pm on pm.id=pp.product_id where d.isclearcache = 5 group by d.id order by d.buytime desc limit "+pageIndex+" , "+pageSize, null);
List<Pack> li= new ArrayList<Pack>();
if(cur!=null){
if(cur.getCount()==0){
return null;
}
Pack pack=null;
while (cur.moveToNext()){//
pack=new Pack();
pack.setId(cur.getLong(0));
pack.setName(cur.getString(1));
pack.setImgurl(cur.getString(2));
pack.setMcount(cur.getInt(3));
pack.setIsCloud(cur.getInt(4));
li.add(pack);
}
if(cur!=null){
cur.close();
}
}
return li;
}
public void updatePackState(String[] idArray,int state){
try{
for(int i=0; i< idArray.length; i++){
long id = Long.parseLong(idArray[i]);
// addv.put("isclearcache", 5);//5表示需要显示的
DBHelper.getSqLitedatabase().beginTransaction();
String sqlall="update db_pack set isclearcache =" + state + " where id =" + id;
DBHelper.getSqLitedatabase().execSQL(sqlall);
DBHelper.getSqLitedatabase().setTransactionSuccessful();
}
}catch(Exception e){
e.printStackTrace();
}finally{
DBHelper.getSqLitedatabase().endTransaction();
}
}
public void updatePackState(long id,int state){
try{
// addv.put("isclearcache", 5);//5表示需要显示的
DBHelper.getSqLitedatabase().beginTransaction();
String sqlall="update db_pack set isclearcache =" + state + " where id =" + id;
DBHelper.getSqLitedatabase().execSQL(sqlall);
DBHelper.getSqLitedatabase().setTransactionSuccessful();
}catch(Exception e){
e.printStackTrace();
}finally{
DBHelper.getSqLitedatabase().endTransaction();
}
}
/**
* 根据id查看主题详情
*/
public Pack getPackDetailById(long id ){
Pack pack=null;
int iscloud=-1;
SQLiteDatabase mdb=DBHelper.getSqLitedatabase();
String sql="select tempsmus.name ,tempsmus.media_url,tempsmus.id,tempsmus.img_url ,tempsmus.artistname,tempsmus.isclearcache,dbp.isclearcache from (select db_music.name,db_music.id,db_music.media_url,db_music.disk_id,db_music.first_char,db_album.img_url ,dba.name artistname,db_music.isclearcache from db_music inner join db_disk on db_music.disk_id =db_disk.id inner join db_album on db_album.id =db_disk.album_id inner join product_artist pa on pa.product_id =db_music.id left join db_artist dba on dba.id =pa.artist_id where db_music.isclearcache = 5 group by db_music.id order by db_music.id desc ) tempsmus inner join product_pack pp on pp.product_id = tempsmus.id inner join db_pack dbp on dbp.id=pp.pack_id where dbp.id="+id;
Cursor cur= mdb.rawQuery(sql, null);
List<Music> musicli=new ArrayList<Music>();
if(cur!=null&&cur.getCount()>0){
pack=new Pack();
Music music=null;
while(cur.moveToNext()){
music=new Music();
music.setName(cur.getString(0));
music.setMediaurl(cur.getString(1));
music.setId(cur.getLong(2));
music.setImgUrl(cur.getString(3));
music.setArtistName(cur.getString(4));
music.setIscloud(cur.getInt(5));
musicli.add(music);
pack.setIsCloud(cur.getInt(6));
}
pack.setLi(musicli);
if(cur!=null){
cur.close();
}
}
return pack;
}
}