package com.yuantiku.yyl.helper;
import android.database.sqlite.SQLiteDatabase;
import android.text.TextUtils;
import com.yuantiku.dbdata.Account;
import com.yuantiku.dbdata.AccountDao;
import com.yuantiku.dbdata.AccountDao.Properties;
import com.yuantiku.dbdata.DaoMaster;
import com.yuantiku.dbdata.DaoMaster.DevOpenHelper;
import com.yuantiku.dbdata.DaoSession;
import com.yuantiku.yyl.MyApplication;
import java.util.List;
import de.greenrobot.dao.query.QueryBuilder;
/**
* @author lirui
* @date 15/4/29.
*/
public enum AccountDBHelper {
helper;
private SQLiteDatabase db;
private DaoMaster daoMaster;
private DaoSession daoSession;
private AccountDao accountDao;
AccountDBHelper() {
DevOpenHelper helper = new DaoMaster.DevOpenHelper(MyApplication.getInstance()
.getApplicationContext(),
"accounds-db", null);
db = helper.getWritableDatabase();
daoMaster = new DaoMaster(db);
daoSession = daoMaster.newSession();
accountDao = daoSession.getAccountDao();
}
public List<Account> getAccounts() {
return accountDao.loadAll();
}
public void save(Account account) {
accountDao.insertOrReplace(account);
}
public void save(List<Account> accounts) {
accountDao.insertOrReplaceInTx(accounts);
}
public List<Account> query(String text) {
if (TextUtils.isEmpty(text)) {
return getAccounts();
}
StringBuilder stringBuilder = new StringBuilder(text);
QueryBuilder queryBuilder = accountDao.queryBuilder();
if (isChinese(text.charAt(0))) {
stringBuilder.insert(0, "%").append("%");
queryBuilder.where(Properties.Name.like(stringBuilder.toString()));
} else {
for (int i = 0; i < text.length(); i++) {
stringBuilder.insert(i * 2, "%");
}
stringBuilder.append("%");
queryBuilder.where(Properties.Ldap.like(stringBuilder.toString()));
}
return queryBuilder.list();
}
private static boolean isChinese(char c) {
Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);
if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS
|| ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS
|| ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A
|| ub == Character.UnicodeBlock.GENERAL_PUNCTUATION
|| ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION
|| ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS) {
return true;
}
return false;
}
public void clear() {
accountDao.deleteAll();
}
}