package com.kescoode.xmail.db.internal;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;
import android.support.annotation.NonNull;
import com.kescoode.xmail.AppConstant;
import java.util.Objects;
/**
* Dao层操作基类
*
* @author Kesco Lin
*/
public abstract class DataDelegate {
protected static final String CREATE_TABLE = "create table ";
protected static final String PRIMARY_KEY = " integer primary key, ";
protected static final String TYPE_TEXT = " text";
protected static final String TYPE_INTEGER = " integer";
protected static final String COLUMN_NOT_NULL = " not null";
protected final Context context;
public DataDelegate(Context context) {
this.context = context;
}
public abstract void onCreate(SQLiteDatabase db);
public abstract void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion);
protected Uri parseUri(String table) {
return Uri.parse("content://" + AppConstant.DB.PROVIDER_AUTHORITY + "/" + table);
}
/**
* 用{@link android.content.ContentResolver}表达的Select语句
*
* @param uri ContentProvider处理的URI
* @param sql 执行的SQL语句
* @param args SQL参数
* @return 游标
*/
protected Cursor select(Uri uri, String sql, @NonNull Object... args) {
String[] sArgs = new String[args.length];
for (int i = 0; i < args.length; i++) {
sArgs[i] = String.valueOf(args[i]);
}
return context.getContentResolver().query(uri, null, sql, sArgs, null);
}
}