package org.qinshuihepan.bbs.dao; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.net.Uri; import android.provider.BaseColumns; import android.support.v4.content.CursorLoader; import org.qinshuihepan.bbs.model.Image; import org.qinshuihepan.bbs.util.database.Column; import org.qinshuihepan.bbs.util.database.SQLiteTable; import java.util.ArrayList; import java.util.List; /** * Created by liurongchan on 14-4-25. */ public class ImagesDataHelper extends BaseDataHelper { public ImagesDataHelper(Context context) { super(context); } @Override protected Uri getContentUri() { return DataProvider.IMAGES_CONTENT_URI; } private ContentValues getContentValues(Image image) { ContentValues values = new ContentValues(); values.put(ImagesDBInfo.PID, image.pid); values.put(ImagesDBInfo.URL, image.url); return values; } public Image query(long pid) { Image image = null; Cursor cursor = query(null, ImagesDBInfo.PID + "=?", new String[]{ String.valueOf(pid) }, null ); if (cursor.moveToFirst()) { image = Image.fromCursor(cursor); } cursor.close(); return image; } public ArrayList<Image> queryImages(long pid) { ArrayList<Image> images = null; Cursor cursor = query(null, ImagesDBInfo.PID + "=?", new String[]{ String.valueOf(pid) }, null ); if (cursor.moveToFirst()) { images = Image.listfromCursor(cursor); } cursor.close(); return images; } public void bulkInsert(List<Image> images) { ArrayList<ContentValues> contentValues = new ArrayList<ContentValues>(); for (Image image : images) { ContentValues values = getContentValues(image); contentValues.add(values); } ContentValues[] valueArray = new ContentValues[contentValues.size()]; bulkInsert(contentValues.toArray(valueArray)); } public int deleteAll() { synchronized (DataProvider.DBLock) { DBHelper mDBHelper = DataProvider.getDBHelper(); SQLiteDatabase db = mDBHelper.getWritableDatabase(); int row = db.delete(ImagesDBInfo.TABLE_NAME, null, null); return row; } } public CursorLoader getCursorLoader() { return new CursorLoader(getContext(), getContentUri(), null, null, null, ImagesDBInfo._ID + " ASC"); } public static final class ImagesDBInfo implements BaseColumns { public static final String TABLE_NAME = "images"; public static final String PID = "pid"; public static final String URL = "url"; public static final SQLiteTable TABLE = new SQLiteTable(TABLE_NAME) .addColumn(PID, Column.DataType.INTEGER) .addColumn(URL, Column.DataType.TEXT); private ImagesDBInfo() { } } }