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.AccountSchema;
import com.kescoode.xmail.domain.Account;
/**
* 邮件用户Dao
*
* @author Kesco Lin
*/
public class AccountDao extends DataDelegate {
public static final String TABLE_NAME = "account";
private static final String SQL_CREATE_TABLE = DataDelegate.CREATE_TABLE + TABLE_NAME + " ( " + AccountSchema._ID +
PRIMARY_KEY + AccountSchema.NAME + TYPE_TEXT + COLUMN_NOT_NULL + ", " +
AccountSchema.PASSWD + TYPE_TEXT + COLUMN_NOT_NULL + ", " +
AccountSchema.CONFIG_ID + TYPE_INTEGER + COLUMN_NOT_NULL + " );";
public AccountDao(Context context) {
super(context);
}
/**
* 所有登录的邮箱帐户
*
* @return 已登录的帐户数组
*/
public Account[] selectAllAccounts() {
Cursor cursor = select(parseUri(TABLE_NAME), "select * from account");
Account[] accounts = new Account[cursor.getCount()];
if (accounts.length != 0 && cursor.moveToFirst()) {
for (int i = 0; i < accounts.length; i++) {
accounts[i] = new Account(context, cursor);
cursor.moveToNext();
}
}
cursor.close();
return accounts;
}
/**
* 把邮箱帐户存进数据库
*
* @param account 邮箱业务对象
* @return 插入之后的主键
*/
public long insertAccount2Db(Account account) {
account.getConfigId(); /* 先把配置保存 */
ContentValues values = new ContentValues();
values.put(AccountSchema.NAME, account.name);
values.put(AccountSchema.PASSWD, account.passwd);
values.put(AccountSchema.CONFIG_ID, account.getConfigId());
Uri uri = context.getContentResolver().insert(parseUri(TABLE_NAME), values);
long id = ContentUris.parseId(uri);
account.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) {
/* 目前还是初版,没有升级数据库逻辑 */
}
}