package net.dev123.yibo.db; import java.util.List; import net.dev123.commons.ServiceProvider; import net.dev123.commons.util.ListUtil; import net.dev123.commons.util.StringUtil; import net.dev123.yibome.entity.ConfigApp; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; public class ConfigAppDao extends BaseDao<ConfigApp> { private static final String TABLE = "Config_App"; public ConfigAppDao(Context context) { super(context); } public void save(ConfigApp app) { if (isNull(app)) { return; } SQLiteDatabase sqLiteDatabase = dbHelper.getWritableDatabase(); save(sqLiteDatabase, app); } public void batchSave(List<ConfigApp> apps) { if (ListUtil.isEmpty(apps)) { return; } SQLiteDatabase sqLiteDatabase = dbHelper.getWritableDatabase(); sqLiteDatabase.beginTransaction(); try { for (ConfigApp app : apps) { save(sqLiteDatabase, app); } sqLiteDatabase.setTransactionSuccessful(); } finally { sqLiteDatabase.endTransaction(); } } void save(SQLiteDatabase sqLiteDatabase, ConfigApp app) { if (isNull(app)) { return; } ContentValues values = new ContentValues(); values.put("Service_Provider", app.getServiceProviderNo()); values.put("App_Name", app.getAppName()); values.put("App_Key", app.getAppKey()); values.put("App_Secret", app.getAppSecret()); values.put("Auth_Version", app.getAuthVersion()); values.put("Auth_Flow", app.getAuthFlow()); long rowId = sqLiteDatabase.insert(TABLE, null, values); app.setAppId(rowId); } public int update(ConfigApp app) { if (isNull(app) || app.getAppId() <= 0L) { return -1; } SQLiteDatabase sqLiteDatabase = dbHelper.getWritableDatabase(); sqLiteDatabase.beginTransaction(); int rowsAffected = 0; try { ContentValues values = new ContentValues(); values.put("Service_Provider", app.getServiceProviderNo()); values.put("App_Name", app.getAppName()); values.put("App_Key", app.getAppKey()); values.put("App_Secret", app.getAppSecret()); values.put("Auth_Version", app.getAuthVersion()); values.put("Auth_Flow", app.getAuthFlow()); rowsAffected = sqLiteDatabase.update(TABLE, values, "App_ID = " + app.getAppId(), null); sqLiteDatabase.setTransactionSuccessful(); } finally { sqLiteDatabase.endTransaction(); } return rowsAffected; } public int delete(ConfigApp app) { if (isNull(app) || app.getAppId() <= 0L) { return -1; } SQLiteDatabase sqLiteDatabase = dbHelper.getWritableDatabase(); int rowsAffected = sqLiteDatabase.delete(TABLE, "App_ID = " + app.getAppId() , null); return rowsAffected; } public ConfigApp findByAppKey(String appKey, ServiceProvider sp) { if (StringUtil.isEmpty(appKey)) { return null; } StringBuilder sql = new StringBuilder(); sql.append("select * from ").append(TABLE); sql.append(" where App_Key = '").append(appKey).append("'"); if (sp != null) { sql.append(" and Service_Provider = ").append(sp.getServiceProviderNo()); } return query(sql.toString()); } public ConfigApp findById(String appId, ServiceProvider sp) { if (isNull(sp) || StringUtil.isEmpty(appId)) { return null; } SQLiteDatabase sqLiteDatabase = dbHelper.getWritableDatabase(); return findById(sqLiteDatabase, appId, sp); } ConfigApp findById(SQLiteDatabase sqLiteDatabase, String appId, ServiceProvider sp) { String sql = "select * from " + TABLE + " where App_ID = " + appId + " and Service_Provider = " + sp.getServiceProviderNo(); return this.query(sqLiteDatabase, sql); } public List<ConfigApp> findAll() { return find("select * from " + TABLE); } public List<ConfigApp> findApps(ServiceProvider sp) { if (sp == null) { return null; } StringBuilder sql = new StringBuilder(); int providerNo = sp.getServiceProviderNo(); sql.append("select * from " + TABLE + " where " + " Service_Provider = " + providerNo); return find(sql.toString()); } @Override public ConfigApp extractData(SQLiteDatabase sqLiteDatabase, Cursor cursor) { int spNo = cursor.getInt(cursor.getColumnIndex("Service_Provider")); ConfigApp app = new ConfigApp(); app.setServiceProviderNo(spNo); app.setAppId(cursor.getLong(cursor.getColumnIndex("App_ID"))); app.setAppName(cursor.getString(cursor.getColumnIndex("App_Name"))); app.setAppKey(cursor.getString(cursor.getColumnIndex("App_Key"))); app.setAppSecret(cursor.getString(cursor.getColumnIndex("App_Secret"))); app.setAuthFlow(cursor.getInt(cursor.getColumnIndex("Auth_Flow"))); app.setAuthVersion(cursor.getInt(cursor.getColumnIndex("Auth_Version"))); app.setState(ConfigApp.STATE_ENABLED); app.setShared(false); return app; } }