package com.kescoode.xmail.db; import android.content.ContentUris; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.net.Uri; import com.kescoode.xmail.db.internal.DataDelegate; import com.kescoode.xmail.db.table.EmailConfigSchema; import com.kescoode.xmail.domain.EmailConfig; /** * 邮件配置Dao * * @author Kesco Lin */ public class EmailConfigDao extends DataDelegate { public static final String TABLE_NAME = "email_config"; private static final String SQL_CREATE_TABLE = CREATE_TABLE + TABLE_NAME + " ( " + EmailConfigSchema._ID + PRIMARY_KEY + EmailConfigSchema.DOMAIN + TYPE_TEXT + COLUMN_NOT_NULL + ", " + EmailConfigSchema.SEND + TYPE_TEXT + COLUMN_NOT_NULL + ", " + EmailConfigSchema.RECEIVE + TYPE_TEXT + COLUMN_NOT_NULL + ", " + EmailConfigSchema.USE_SUFFIX + TYPE_INTEGER + COLUMN_NOT_NULL + " );"; public EmailConfigDao(Context context) { super(context); } /** * 根据Config ID来 * @param id Config表ID * @return EmailConfig类或者null */ public EmailConfig selectConfigFromDB(int id) { EmailConfig config = null; Cursor cursor = select(parseUri(TABLE_NAME), "select * from email_config where _id = ?", id); if (cursor.getCount() != 0) { cursor.moveToFirst(); config = new EmailConfig(cursor); } cursor.close(); return config; } /** * 把服务器配置存进数据库 * @param config 服务器配置对象 * @return 插入列的ID */ public long insertConfig2DB(EmailConfig config) { ContentValues values = new ContentValues(); EmailConfig.SettingRaw raw = config.getDefaultRaw(); values.put(EmailConfigSchema.DOMAIN, config.domain); values.put(EmailConfigSchema.SEND, raw.send); values.put(EmailConfigSchema.RECEIVE, raw.receive); values.put(EmailConfigSchema.USE_SUFFIX, raw.useSuffix); Uri uri = context.getContentResolver().insert(parseUri(TABLE_NAME), values); long id = ContentUris.parseId(uri); config.setId(id); return id; } @Override public void onCreate(SQLiteDatabase db) { db.execSQL(SQL_CREATE_TABLE); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { /* 目前还是初版,没有升级数据库逻辑 */ } }