package com.swifty.fillcolor.model; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.utils.DiskCacheUtils; import com.nostra13.universalimageloader.utils.L; import com.swifty.fillcolor.MyApplication; import com.swifty.fillcolor.model.db.FCDBHelper; import com.swifty.fillcolor.model.bean.CacheImageBean; import com.swifty.fillcolor.model.bean.PictureBean; import com.swifty.fillcolor.model.bean.ThemeBean; import java.io.File; import java.util.ArrayList; import java.util.List; /** * Created by Swifty.Wang on 2015/8/5. */ public class FCDBModel { private SQLiteDatabase db; private Cursor cursor; private FCDBHelper fcdbHelper; private static FCDBModel fcdbModel; private FCDBModel() { } public static FCDBModel getInstance() { if (fcdbModel == null) { fcdbModel = new FCDBModel(); } return fcdbModel; } public List<ThemeBean.Theme> readThemeList(Context context) { fcdbHelper = new FCDBHelper(context); db = fcdbHelper.getReadableDatabase(); cursor = db.query(FCDBHelper.FCTABLE, null, null, null, null, null, null, null); if (cursor.getCount() == 0) { closeDBandCursor(); return null; } else { List<ThemeBean.Theme> themeBeans = new ArrayList<>(); while (cursor.moveToNext()) { themeBeans.add(new ThemeBean.Theme(cursor.getInt(0), cursor.getString(1), cursor.getInt(2))); } closeDBandCursor(); return themeBeans; } } public void insertNewThemes(Context context, List<ThemeBean.Theme> themeBeanList) { fcdbHelper = new FCDBHelper(context); db = fcdbHelper.getWritableDatabase(); for (ThemeBean.Theme theme : themeBeanList) { ContentValues value = new ContentValues(); value.put(FCDBHelper.FCTABLE_COL_0, theme.getC()); value.put(FCDBHelper.FCTABLE_COL_1, theme.getN()); value.put(FCDBHelper.FCTABLE_COL_2, theme.getStatus()); db.insert(FCDBHelper.FCTABLE, null, value); } closeDBandCursor(); } public List<PictureBean.Picture> readPicList(Context context, int theme_id) { fcdbHelper = new FCDBHelper(context); db = fcdbHelper.getReadableDatabase(); cursor = db.query(FCDBHelper.FCIMAGETABLE, null, FCDBHelper.FCIMAGETABLE_COL_0 + "=" + theme_id, null, null, null, null, null); if (cursor.getCount() == 0) { closeDBandCursor(); return null; } else { List<PictureBean.Picture> pictureBeans = new ArrayList<>(); while (cursor.moveToNext()) { pictureBeans.add(new PictureBean.Picture(cursor.getInt(1), cursor.getInt(2), cursor.getFloat(3))); } closeDBandCursor(); return pictureBeans; } } public void insertPics(Context context, int id, List<PictureBean.Picture> pictureBeans) { fcdbHelper = new FCDBHelper(context); db = fcdbHelper.getWritableDatabase(); for (PictureBean.Picture picBean : pictureBeans) { ContentValues value = new ContentValues(); value.put(FCDBHelper.FCIMAGETABLE_COL_0, id); value.put(FCDBHelper.FCIMAGETABLE_COL_1, picBean.getId()); value.put(FCDBHelper.FCIMAGETABLE_COL_2, picBean.getStatus()); value.put(FCDBHelper.FCIMAGETABLE_COL_3, picBean.getWvHradio()); db.insert(FCDBHelper.FCIMAGETABLE, null, value); } closeDBandCursor(); } private void closeDBandCursor() { if (cursor != null) cursor.close(); if (db != null) db.close(); } public void deleteAllRows(Context context, String table) { fcdbHelper = new FCDBHelper(context); db = fcdbHelper.getWritableDatabase(); db.delete(table, null, null); closeDBandCursor(); } public void deleteThisCategoryid(Context context, int categoryid, String fcimagetable) { fcdbHelper = new FCDBHelper(context); db = fcdbHelper.getWritableDatabase(); db.delete(fcimagetable, FCDBHelper.FCIMAGETABLE_COL_0 + " = " + categoryid, null); closeDBandCursor(); } // public void addMD5andHashCode(SQLiteDatabase sqLiteDatabase) { // db = sqLiteDatabase; // cursor = sqLiteDatabase.query(FCDBHelper.FCIMAGETABLE, null, null, null, null, null, null); // if (cursor. getCount() == 0) { // return; // } else { // Md5FileNameGenerator md5FileNameGenerator = new Md5FileNameGenerator(); // while (cursor.moveToNext()) { // String url = String.format(MyApplication.ImageLageUrl, cursor.getInt(0), cursor.getInt(1)); // ContentValues values = new ContentValues(); // values.put(FCDBHelper.FCIMAGETABLE_COL_4, md5FileNameGenerator.generate(url)); // values.put(FCDBHelper.FCIMAGETABLE_COL_5, String.valueOf(url.hashCode())); // db.update(FCDBHelper.FCIMAGETABLE, values, FCDBHelper.FCIMAGETABLE_COL_0 + "=" + cursor.getInt(0) + " and " + FCDBHelper.FCIMAGETABLE_COL_1 + "=" + cursor.getInt(1), null); // } // } // } public List<CacheImageBean> readHaveCacheImages(Context context) { fcdbHelper = new FCDBHelper(context); db = fcdbHelper.getWritableDatabase(); cursor = db.query(FCDBHelper.FCIMAGETABLE, null, null, null, null, null, null); List<CacheImageBean> cacheImageBeans = new ArrayList<>(); if (cursor.getCount() == 0) { closeDBandCursor(); return cacheImageBeans; } else { while (cursor.moveToNext()) { String url = String.format(MyApplication.ImageLageUrl, cursor.getInt(0), cursor.getInt(1)); File file = DiskCacheUtils.findInCache(url, ImageLoader.getInstance().getDiskCache()); if (file != null && file.exists()) { Float aFloat = 0f; try{ aFloat = cursor.getFloat(3); }catch (Exception e){ L.e(e.toString()); } cacheImageBeans.add(new CacheImageBean(url, aFloat)); } } return cacheImageBeans; } } }