package com.example.administrator.searchpicturetool.model.db;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;
import com.example.administrator.searchpicturetool.config.MySql;
import com.example.administrator.searchpicturetool.model.bean.CollectSearchTip;
import com.example.administrator.searchpicturetool.model.bean.DownloadImg;
import com.example.administrator.searchpicturetool.model.bean.NetImage;
import com.example.administrator.searchpicturetool.model.bean.NetImageImpl;
import com.example.administrator.searchpicturetool.model.bean.NewRecommendContent;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
/**
* Created by wenhuaijun on 2016/1/31 0031.
*/
public class DBManager {
private static DBManager instance;
private DBHelper helper;
private SQLiteDatabase db;
private DBManager(Context context){
helper = new DBHelper(context);
db = helper.getWritableDatabase();
}
//单例模式
public static synchronized DBManager getInstance(Context context){
if(instance!=null){
return instance;
}else{
instance = new DBManager(context);
return instance;
}
}
/**
* 添加已下载图片信息到数据库
*/
public void addHasDownload(DownloadImg img){
db.beginTransaction();
db.execSQL("insert into "+ MySql.DownloadTable+" values(null,?,?,?,?)",
new Object[]{img.getName(),img.getLargUrl(),img.getHeight(),img.getWidth()});
db.setTransactionSuccessful();
db.endTransaction();
}
/**
* 将已删除的下载图片信息从数据库里删除
*/
public void deleteHasDownload(String fileName){
db.beginTransaction();
db.execSQL("delete from "+MySql.DownloadTable+" where fileName =?",new Object[]{fileName});
// db.execSQL("delete from " + MySql.DownloadTable + " where fileName = " + "'" + fileName + "'");
db.setTransactionSuccessful();
db.endTransaction();
}
/**
* 批量删除已选中下载的图片
*/
public void deleteDownloadPictures(List<DownloadImg> imgs,Context context){
db.beginTransaction();
for(DownloadImg img :imgs){
if(img.isSelected()){
new File(img.getName()).delete();
//发送广播,让相册更新图片
context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + img.getName())));
db.execSQL("delete from "+MySql.DownloadTable+" where fileName =?",new Object[]{img.getName()});
}
}
db.setTransactionSuccessful();
db.endTransaction();
}
/**
* 查询所有下载的图片信息
* @return
*/
public ArrayList<DownloadImg> queryHasDownloadImgs(){
ArrayList<DownloadImg> imgs = new ArrayList<DownloadImg>();
Cursor cursor = db.rawQuery("select * from "+MySql.DownloadTable+" order by id desc",null);
if (cursor!=null&&cursor.moveToFirst()){
do{
DownloadImg img = new DownloadImg();
img.setName(cursor.getString(cursor.getColumnIndex("fileName")));
img.setLargUrl(cursor.getString(cursor.getColumnIndex("largeImgUrl")));
img.setHeight(cursor.getInt(cursor.getColumnIndex("height")));
img.setWidth(cursor.getInt(cursor.getColumnIndex("width")));
imgs.add(img);
}while(cursor.moveToNext());
}
cursor.close();
return imgs;
}
//从数据库随机抽取需要展示的推荐列表
public List<NewRecommendContent> getRandomRecomendFromDB(){
List<NewRecommendContent> lists = new ArrayList<>();
//获取tip
Cursor cursor = db.rawQuery("select * from "+MySql.RecommendTable+" where justType =1",null);
int tipNums =cursor.getCount();
if (cursor!=null&&cursor.moveToFirst()){
do{
NewRecommendContent img = new NewRecommendContent();
img.setType(cursor.getFloat(cursor.getColumnIndex("type")));
img.setTip(cursor.getString(cursor.getColumnIndex("tip")));
// img.setImageUrl(cursor.getString(cursor.getColumnIndex("imageUrl")));
//img.setTitle(cursor.getString(cursor.getColumnIndex("title")));
//img.setContent(cursor.getString(cursor.getColumnIndex("content")));
if(cursor.getInt(cursor.getColumnIndex("justType"))==1){
img.setJustType(true);
}else{
img.setJustType(false);
}
lists.add(img);
}while(cursor.moveToNext());
}
cursor.close();
if(tipNums!=0){
for(int i=0; i<tipNums;i++){
Cursor contentCursor;
if(lists.get(i).getTip().equals("热门搜索")){
contentCursor = db.rawQuery("select * from "+MySql.RecommendTable+" where justType = 0 and tip =? ORDER BY RANDOM() limit 2",new String[]{lists.get(i).getTip()});
}else{
contentCursor = db.rawQuery("select * from "+MySql.RecommendTable+" where justType = 0 and tip =? ORDER BY RANDOM() limit 4",new String[]{lists.get(i).getTip()});
}
if (contentCursor!=null&&contentCursor.moveToFirst()){
do{
NewRecommendContent img = new NewRecommendContent();
img.setType(contentCursor.getFloat(contentCursor.getColumnIndex("type")));
img.setTip(contentCursor.getString(contentCursor.getColumnIndex("tip")));
img.setImageUrl(contentCursor.getString(contentCursor.getColumnIndex("imageUrl")));
img.setTitle(contentCursor.getString(contentCursor.getColumnIndex("title")));
img.setContent(contentCursor.getString(contentCursor.getColumnIndex("content")));
if(contentCursor.getInt(contentCursor.getColumnIndex("justType"))==1){
img.setJustType(true);
}else{
img.setJustType(false);
}
lists.add(img);
}while(contentCursor.moveToNext());
}
}
}
/* for(NewRecommendContent recommendContent :lists){
JUtils.Log(recommendContent.toString());
}*/
return lists;
}
//从数据库中获取所有推荐列表
public List<NewRecommendContent> getRecomendContentfromDB(){
List<NewRecommendContent> lists = new ArrayList<>();
Cursor cursor = db.rawQuery("select * from "+MySql.RecommendTable+"",null);
if (cursor!=null&&cursor.moveToFirst()){
do{
NewRecommendContent img = new NewRecommendContent();
img.setType(cursor.getFloat(cursor.getColumnIndex("type")));
img.setTip(cursor.getString(cursor.getColumnIndex("tip")));
img.setImageUrl(cursor.getString(cursor.getColumnIndex("imageUrl")));
img.setTitle(cursor.getString(cursor.getColumnIndex("title")));
img.setContent(cursor.getString(cursor.getColumnIndex("content")));
if(cursor.getInt(cursor.getColumnIndex("justType"))==1){
img.setJustType(true);
}else{
img.setJustType(false);
}
lists.add(img);
}while(cursor.moveToNext());
}
cursor.close();
return lists;
}
/**
* 添加已收藏图片信息到数据库
*/
public void addHasCollect(NetImage img){
db.beginTransaction();
db.execSQL("insert into "+MySql.CollectTable+" values(null,?,?,?,?)",
new Object[]{img.getThumbImg(),img.getLargeImg(),img.getHeight(),img.getWidth()});
db.setTransactionSuccessful();
db.endTransaction();
}
public void addSearchTip(String tip,String uriType,String uri){
db.beginTransaction();
db.execSQL("insert into "+MySql.TipTable+" values(null,?,?,?)",
new Object[]{tip,uriType,uri});
db.setTransactionSuccessful();
db.endTransaction();
}
//添加一个推荐列表到数据库
private void addRecommendContent(NewRecommendContent content){
// db.beginTransaction();
db.execSQL("insert into " + MySql.RecommendTable + " values(?,?,?,?,?,?)",
new Object[]{content.getType(), content.getTip(),content.getImageUrl(), content.getTitle(), content.getContent(), content.isJustType()});
// db.setTransactionSuccessful();
// db.endTransaction();
}
//删除推荐列表库里面所有的数据
public void deleteAllRecommendContents(){
db.beginTransaction();
db.execSQL("delete from " + MySql.RecommendTable + "");
db.setTransactionSuccessful();
db.endTransaction();
}
//批量添加一系列的推荐到数据库
public void addAllRecomendContents(List<NewRecommendContent> lists){
db.beginTransaction();
for(NewRecommendContent content:lists){
addRecommendContent(content);
}
db.setTransactionSuccessful();
db.endTransaction();
}
public void deleteSearchTip(int id){
db.beginTransaction();
db.execSQL("delete from "+MySql.TipTable+" where id = ?",new Object[]{id});
db.setTransactionSuccessful();
db.endTransaction();
}
public void deleteSearchTips(List<CollectSearchTip> collectSearchTips){
db.beginTransaction();
for(CollectSearchTip searchTip :collectSearchTips){
if(searchTip.isSelected()){
db.execSQL("delete from "+MySql.TipTable+" where id = ?",new Object[]{searchTip.getId()});
}
}
db.setTransactionSuccessful();
db.endTransaction();
}
/**
* 将已删除的收藏图片信息从数据库里删除
*/
public void deleteHasCollect(String largeImgUrl){
db.beginTransaction();
db.execSQL("delete from "+MySql.CollectTable+" where largeImgUrl = ?",new Object[]{largeImgUrl});
db.setTransactionSuccessful();
db.endTransaction();
}
/**
* 批量删除已选中下载的图片
*/
public void deleteCollectPictures(ArrayList<NetImage> imgs){
db.beginTransaction();
for(NetImage img :imgs){
if(img.isSelected()){
db.execSQL("delete from "+MySql.CollectTable+" where largeImgUrl =?",new Object[]{img.getLargeImg()});
}
}
db.setTransactionSuccessful();
db.endTransaction();
}
/**
* 查询所有收藏的图片信息
* @return
*/
public ArrayList<NetImage> queryHasCollectImgs(){
ArrayList<NetImage> imgs = new ArrayList<NetImage>();
Cursor cursor = db.rawQuery("select * from "+MySql.CollectTable+" order by id desc",null);
if (cursor!=null&&cursor.moveToFirst()){
do{
NetImageImpl netImage= new NetImageImpl();
netImage.setThumbUrl(cursor.getString(cursor.getColumnIndex("smallImgUrl")));
netImage.setLargeUrl(cursor.getString(cursor.getColumnIndex("largeImgUrl")));
netImage.setThumb_height(cursor.getInt(cursor.getColumnIndex("height")));
netImage.setThumb_width(cursor.getInt(cursor.getColumnIndex("width")));
imgs.add(netImage);
}while(cursor.moveToNext());
}
cursor.close();
return imgs;
}
/**
* 查询所有收藏的搜索标签
* @return
*/
public ArrayList<CollectSearchTip> queryHasCollectSearchTips(){
ArrayList<CollectSearchTip> searchTips = new ArrayList<CollectSearchTip>();
Cursor cursor = db.rawQuery("select * from "+MySql.TipTable+" order by id desc",null);
if (cursor!=null&&cursor.moveToFirst()){
do{
CollectSearchTip searchTip= new CollectSearchTip();
searchTip.setTip(cursor.getString(cursor.getColumnIndex("tip")));
searchTip.setUriType(cursor.getString(cursor.getColumnIndex("uriType")));
searchTip.setUri(cursor.getString(cursor.getColumnIndex("imageUri")));
searchTip.setId(cursor.getInt(cursor.getColumnIndex("id")));
searchTips.add(searchTip);
}while(cursor.moveToNext());
}
cursor.close();
return searchTips;
}
}